Wprowadzenie do wyrażeń regularnych w JavaScript
Wyrażenia regularne to takie polecenia dla skomplikowanego wyszukiwania i zamiany (lub po prostu wyszukiwania). Pozwalają one robić bardzo ciekawe rzeczy, ale niestety są dość trudne do opanowania.
Istnieje kilka metod JavaScript do
pracy z wyrażeniami regularnymi. Zaczniemy
zapoznawać się z nimi na przykładzie replace
- znacie już tę metodę: przyjmuje ona pierwszym
parametrem co zmienić, a drugim
- na co zmienić. A sama metoda jest stosowana
do ciągu znaków, w którym dokonywana jest zamiana:
'bab'.replace('a', '!'); // zwróci 'b!b'
Pierwszym parametrem tej metody można przekazać
nie tylko ciąg znaków, ale wyrażenie regularne.
Wyrażenie regularne reprezentuje zestaw
poleceń, umieszczonych wewnątrz ukośników /. Te
ukośniki nazywane są ogranicznikami wyrażeń regularnych.
Same wyrażenia regularne składają się z dwóch typów znaków: z tych, które oznaczają same siebie oraz ze znaków-poleceń, które nazywane są znakami specjalnymi.
Litery i cyfry oznaczają same siebie. W następnym
przykładzie za pomocą wyrażenia regularnego
zamienimy literę 'a' na !:
'bab'.replace(/a/, '!'); // zwróci 'b!b'
A tutaj kropka jest znakiem specjalnym
i oznacza dowolny znak. W następnym
przykładzie znajdziemy ciąg znaków według takiego wzorca:
litera 'x', następnie dowolny znak, następnie
znowu litera 'x':
'xax eee'.replace(/x.x/, '!'); // zwróci '! eee'
Po ogranicznikach można pisać modyfikatory
- polecenia, które zmieniają ogólne właściwości
wyrażenia regularnego. Na przykład, modyfikator
g włącza tryb globalnego wyszukiwania
i zamiany - bez niego wyrażenie regularne szuka tylko
pierwszego dopasowania, a z nim - wszystkie dopasowania.
W następnym przykładzie nie podano modyfikatora
g i wyrażenie regularne znajdzie tylko pierwsze
dopasowanie:
'aab'.replace(/a/, '!'); // zwróci '!ab'
A teraz wyrażenie regularne znajdzie wszystkie dopasowania:
'aab'.replace(/a/g, '!'); // zwróci '!!b'
Dany jest ciąg znaków:
let str = 'ahb acb aeb aeeb adcb axeb';
Napisz wyrażenie regularne, które znajdzie ciągi znaków
'ahb', 'acb', 'aeb'
według wzorca: litera 'a', dowolny znak,
litera 'b'.
Dany jest ciąg znaków:
let str = 'aba aca aea abba adca abea';
Napisz wyrażenie regularne, które znajdzie ciągi znaków
'abba', 'adca', 'abea'
według wzorca: litera 'a', 2
dowolne znaki, litera 'a'.
Dany jest ciąg znaków:
let str = 'aba aca aea abba adca abea';
Napisz wyrażenie regularne, które znajdzie ciągi znaków
'abba' i 'abea', nie chwytając
'adca'.