Úvod do regulárnych výrazov v JavaScripte
Regulárne výrazy sú príkazy pre zložité vyhľadávanie a nahradzovanie (alebo jednoducho vyhľadávanie). Umožňujú robiť veľmi zaujímavé veci, ale, bohužiaľ, sú pomerne ťažké na osvojenie.
Existuje niekoľko metód JavaScriptu pre
prácu s regulárnymi výrazmi. Začneme sa
s nimi zoznamovať na príklade replace
- túto metódu už poznáte: ako prvý parameter
berie čo nahradiť, a ako druhý
- čím nahradiť. A samotná metóda sa aplikuje
na reťazec, v ktorom sa vykonáva nahradzovanie:
'bab'.replace('a', '!'); // vráti 'b!b'
Ako prvý parameter tejto metódy je možné odovzdať
nielen jednoduchý reťazec, ale regulárny výraz.
Regulárny výraz predstavuje súbor
príkazov, umiestnených inside lomítok /. Tieto
lomítka sa nazývajú ohraničovatele regulárnych
výrazov.
Samotné regulárne výrazy sa skladajú z dvoch druhov znakov: z tých, ktoré označujú samy seba a zo znakov-príkazov, ktoré sa nazývajú špeciálne znaky.
Písmená a čísla označujú samy seba. V nasledujúcom
príklade pomocou regulárneho výrazu
nahradíme písmeno 'a' na !:
'bab'.replace(/a/, '!'); // vráti 'b!b'
No bodka je špeciálny znak
a označuje akýkoľvek znak. V nasledujúcom
príklade nájdeme reťazec podľa takejto šablóny:
písmeno 'x', potom akýkoľvek znak, potom
znovu písmeno 'x':
'xax eee'.replace(/x.x/, '!'); // vráti '! eee'
Po ohraničovateľoch je možné písať modifikátory
- príkazy, ktoré menia všeobecné vlastnosti
regulárneho výrazu. Napríklad, modifikátor
g zapína režim globálneho vyhľadávania
a nahradzovania - bez neho regulárka hľadá iba
prvú zhodu, a s ním - všetky zhody.
V nasledujúcom príklade nie je uvedený modifikátor
g a regulárka nájde iba prvú
zhodu:
'aab'.replace(/a/, '!'); // vráti '!ab'
A teraz regulárka nájde všetky zhody:
'aab'.replace(/a/g, '!'); // vráti '!!b'
Daný reťazec:
let str = 'ahb acb aeb aeeb adcb axeb';
Napíšte regulárku, ktorá nájde reťazce
'ahb', 'acb', 'aeb'
podľa šablóny: písmeno 'a', akýkoľvek znak,
písmeno 'b'.
Daný reťazec:
let str = 'aba aca aea abba adca abea';
Napíšte regulárku, ktorá nájde reťazce
'abba', 'adca', 'abea'
podľa šablóny: písmeno 'a', 2
akýchkoľvek znakov, písmeno 'a'.
Daný reťazec:
let str = 'aba aca aea abba adca abea';
Napíšte regulárku, ktorá nájde reťazce
'abba' a 'abea', bez zachytenia
'adca'.