Vezaj v naborih v regularnih izrazih JavaScript
Vezaj - je tudi poseben znak znotraj [ ]
(zunaj pa - ni). Če potrebujete sam vezaj kot znak - ga postavite tja,
kjer ne bo razumljen kot ločilo skupine.
Zakaj je to pomembno: lahko nenamerno ustvarite skupino
znakov. Na primer,
tako - '[:-@]' - mislite, da
izbirate dvopičje, vezaj in znak @, v
resnici pa dobite skupino znakov med
: in @. V to skupino spadajo
naslednji znaki: ? < = > : ;
Od kod so prišli? Iz tabele ASCII - dvopičje ima manjšo številko kot znak @ - in tako nastane skupina. To pomeni, da so vse skupine določene po tabeli ASCII (po želji lahko to uporabite).
Kako se s tem spopasti: postavite znak vezaja
tja, kjer zagotovo ne bo razumljen kot
znak skupine, na primer na začetek ali konec
(to je po [ ali pred ]).
Vezaj lahko tudi escapirate - potem
bo vedno pomenil sam sebe, ne glede na
položaj. Na primer, namesto [:-@] napišite
[:\-@] - in skupine ne bo več,
ampak bodo trije znaki - dvopičje, vezaj in znak
@.
Primer
V naslednjem primeru je vzorec iskanja tak:
številka 1, nato črka od 'a'
do 'z', nato številka 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! 1-2 ! !'
Primer
Zdaj pa escapirajmo vezaj. Kot rezultat
je vzorec iskanja tak: številka 1, nato
črka 'a', ali vezaj, ali črka 'z',
nato številka 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! 1c2 !'
Primer
Lahko preprosto premaknete vezaj, ne da bi ga escapirali:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! 1c2 !'
Primer
V naslednjem primeru je vzorec iskanja tak:
prvi znak - so male črke ali
vezaj '-', nato dve črki 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! Axx ! @xx'
Primer
V naslednjem primeru je vzorec iskanja tak:
prvi znak - so male, velike
črke ali vezaj '-', nato dve črki
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! @xx'
Primer
Vezaj lahko postavite med dve skupini - tam zagotovo ne bo naredil še ene skupine:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! @xx'
Praktične naloge
Podan niz:
let str = 'xaz xBz xcz x-z x@z';
Poiščite vse nize po naslednjem vzorcu:
črka 'x', velika ali mala
črka ali vezaj, črka 'z'.
Podan niz:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Poiščite vse nize po naslednjem vzorcu:
črka 'x', nato ali dolar, ali
vezaj ali plus, nato črka 'z'.