Pomlčka uvnitř množin v regulárních výrazech JavaScript
Pomlčka - je také speciální znak uvnitř [ ]
(zvenčí - ale ne). Pokud potřebujete samotnou
pomlčku jako znak - umístěte ji tam,
kde nebude pochopena jako oddělovač
skupiny.
Proč je to důležité: můžete vytvořit skupinu
znaků, aniž byste si toho všimli. Například,
takto - '[:-@]' - si myslíte, že
vybíráte dvojtečku, pomlčku a zavináč, ale ve
skutečnosti vznikne skupina znaků mezi
: a @. Do této skupiny patří
následující znaky: ? < = > : ;
Odkud se vzaly? Z tabulky ASCII - dvojtečka má nižší číslo než zavináč - a vznikne skupina. To znamená, že všechny skupiny jsou tvořeny podle tabulky ASCII (pokud chcete, můžete toho využívat).
Jak s tím bojovat: umístěte znak pomlčky
tam, kde rozhodně nebude pochopen jako
znak skupiny, například na začátek nebo na konec
(tedy za [ nebo před ]).
Pomlčku lze také escapovat - pak
bude vždy znamenat samu sebe, bez ohledu na
pozici. Například místo [:-@] napsat
[:\-@] - a skupina již nevznikne,
ale budou tři znaky - dvojtečka, pomlčka a zavináč
@.
Příklad
V následujícím příkladu je vzor hledání tento:
číslice 1, poté písmeno od 'a'
do 'z', poté číslice 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Výsledkem bude, že se do proměnné zapíše následující:
'! 1-2 ! !'
Příklad
Nyní pojďme escapovat pomlčku. Výsledkem
bude tento vzor hledání: číslice 1, poté
písmeno 'a', nebo pomlčka, nebo písmeno 'z',
poté číslice 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Výsledkem bude, že se do proměnné zapíše následující:
'! ! 1c2 !'
Příklad
Lze jednoduše přemístit pomlčku, aniž byste ji escapovali:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Výsledkem bude, že se do proměnné zapíše následující:
'! ! 1c2 !'
Příklad
V následujícím příkladu je vzor hledání tento:
první znak - to jsou malá písmena nebo
pomlčka '-', pak dvě písmena 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Výsledkem bude, že se do proměnné zapíše následující:
'! Axx ! @xx'
Příklad
V následujícím příkladu je vzor hledání tento:
první znak - to jsou malá, velká
písmena nebo pomlčka '-', pak dvě písmena
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Výsledkem bude, že se do proměnné zapíše následující:
'! ! ! @xx'
Příklad
Pomlčku lze umístit mezi dvě skupiny - tam rozhodně ještě nevytvoří další skupinu:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Výsledkem bude, že se do proměnné zapíše následující:
'! ! ! @xx'
Praktické úlohy
Je dán řetězec:
let str = 'xaz xBz xcz x-z x@z';
Najděte všechny řetězce podle následujícího vzoru:
písmeno 'x', velké nebo malé
písmeno nebo pomlčka, písmeno 'z'.
Je dán řetězec:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Najděte všechny řetězce podle následujícího vzoru:
písmeno 'x', poté nebo dolar, nebo
pomlčka nebo plus, pak písmeno 'z'.