Sidekriips komplektides JavaScripti regulaaravaldistes
Sidekriips - samuti spetsiaalsümbol [ ] sees
(kuid väljaspool - mitte). Kui vajate sidekriipsu kui sümbolit - asetage see sinna,
kuhu see ei mõisteta rühma eraldajana.
Miks see on oluline: võite teha sümbolite rühma
ise seda märkamata. Näiteks
nii - '[:-@]' - te arvate, et
valite koolon, sidekriipsu ja @-märgi, kuid
tegelikult saadakse sümbolite rühm vahemikus
: kuni @. Sellesse rühma kuuluvad
järgmised sümbolid: ? < = > : ;
Kust need pärinevad? Tabelist ASCII - koolonil on väiksem number kui @-märgil - ja sellest saab rühm. See tähendab, et kõik rühmad saadakse ASCII tabeli järgi (soovi korral seda saab kasutada).
Kuidas sellega toime tulla: asetage sidekriipsu sümbol
sinna, kus seda kindlasti ei mõisteta kui
rühma sümbolit, näiteks alguses või lõpus
(see tähendab pärast [ või enne ]).
Võite ka ekrandeerida sidekriipsu - siis
see tähistab iseennast sõltumata
asukohast. Näiteks [:\-@] asemel kirjutada
[:\-@] - ja rühma enam ei ole, vaid
on kolm sümbolit - koolon, sidekriips ja @-märk
@.
Näide
Järgmises näides on otsimismustriks:
number 1, siis täht vahemikus 'a'
kuni 'z', siis number 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Tulemusena kirjutatakse muutujasse järgmine:
'! 1-2 ! !'
Näide
Ekrandeerime nüüd sidekriipsu. Tulemusena
on otsimismustriks: number 1, siis
täht 'a', või sidekriips, või täht 'z',
siis number 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Tulemusena kirjutatakse muutujasse järgmine:
'! ! 1c2 !'
Näide
Võite lihtsalt ümber paigutada sidekriipsu, seda ekrandeermata:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Tulemusena kirjutatakse muutujasse järgmine:
'! ! 1c2 !'
Näide
Järgmises näides on otsimismustriks:
esimene sümbol on väiketähed või
sidekriips '-', siis kaks tähte 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Tulemusena kirjutatakse muutujasse järgmine:
'! Axx ! @xx'
Näide
Järgmises näides on otsimismustriks:
esimene sümbol on väike- või suurtäht
või sidekriips '-', siis kaks tähte
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! @xx'
Näide
Sidekriipsu saab asetada kahe rühma vahele - seal see kindlasti ei tee veel üht rühma:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! @xx'
Praktilised ülesanded
Antud on string:
let str = 'xaz xBz xcz x-z x@z';
Leia kõik stringid järgmise mustri järgi:
täht 'x', suur või väike
täht või sidekriips, täht 'z'.
Antud on string:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Leia kõik stringid järgmise mustri järgi:
täht 'x', siis kas dollarimärk,
sidekriips või plussmärk, siis täht 'z'.