Pomlčka vnútri množín v regulárnych výrazoch JavaScript
Pomlčka - tiež špeciálny znak vnútri [ ]
(ale vonku - nie). Ak potrebujete samotnú
pomlčku ako znak - umiestnite ju tam,
kde nebude pochopená ako oddeľovač
skupiny.
Prečo je to dôležité: môžete vytvoriť skupinu
znakov, ani o tom nevediac. Napríklad,
takto - '[:-@]' - myslíte si, že
vyberáte dvojbodku, pomlčku a zavináč, ale v
skutočnosti sa vytvorí skupina znakov medzi
: a @. Do tejto skupiny patria
nasledujúce znaky: ? < = > : ;
Odkiaľ sa vzali? Z tabuľky ASCII - dvojbodka má menšie číslo ako zavináč - a vznikne skupina. To znamená, že všetky skupiny sa tvoria podľa tabuľky ASCII (ak chcete, môžete to využiť).
Ako s tým bojovať: umiestnite znak pomlčky
tam, kde určite nebude pochopený ako
znak skupiny, napríklad na začiatku alebo na konci
(to znamená za [ alebo pred ]).
Pomlčku môžete tiež escapovať - potom
bude predstavovať samu seba bez ohľadu na
pozíciu. Napríklad, namiesto [:-@] napísať
[:\-@] - a skupina už nebude, ale
budú tri znaky - dvojbodka, pomlčka a zavináč
@.
Príklad
V nasledujúcom príklade je vzor vyhľadávania takýto:
číslica 1, potom písmeno od 'a'
do 'z', potom číslica 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! 1-2 ! !'
Príklad
Poďme teraz escapovať pomlčku. Výsledkom
je vzor vyhľadávania takýto: číslica 1, potom
písmeno 'a', alebo pomlčka, alebo písmeno 'z',
potom číslica 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! ! 1c2 !'
Príklad
Môžete jednoducho presunúť pomlčku, bez escapovania:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! ! 1c2 !'
Príklad
V nasledujúcom príklade je vzor vyhľadávania takýto:
prvý znak - to sú malé písmená alebo
pomlčka '-', potom dve písmená 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! Axx ! @xx'
Príklad
V nasledujúcom príklade je vzor vyhľadávania takýto:
prvý znak - to sú malé, veľké
písmená alebo pomlčka '-', potom dve písmená
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! ! ! @xx'
Príklad
Môžete umiestniť pomlčku medzi dve skupiny - tam určite nevytvorí ďalšiu skupinu:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! ! ! @xx'
Praktické úlohy
Daný reťazec:
let str = 'xaz xBz xcz x-z x@z';
Nájdite všetky reťazce podľa nasledujúceho vzoru:
písmeno 'x', veľké alebo malé
písmeno alebo pomlčka, písmeno 'z'.
Daný reťazec:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Nájdite všetky reťazce podľa nasledujúceho vzoru:
písmeno 'x', potom alebo dolár, alebo
pomlčka alebo plus, potom písmeno 'z'.