Polecenie 'lub' w wyrażeniach regularnych JavaScript
W tej lekcji przeanalizujemy polecenie
'|', które stanowi bardziej
zaawansowany wariant 'lub' w porównaniu
z poleceniem [ ]. To polecenie pozwala
podzielić wyrażenie regularne na kilka części.
Przy tym szukany element może pasować albo do jednej
części wyrażenia, albo do drugiej. Spójrzmy
na przykładach.
Przykład
W tym przykładzie wzorzec wyszukiwania jest następujący: trzy
litery 'a' lub trzy litery 'b':
let str = 'aaa bbb abb';
let res = str.replace(/a{3}|b{3}/g, '!');
W wyniku do zmiennej zostanie zapisane następujące:
'! ! abb'
Przykład
W tym przykładzie wzorzec wyszukiwania jest następujący: trzy
litery 'a' lub od 1 i więcej
liter 'b':
let str = 'aaa bbb bbbb bbbbb axx';
let res = str.replace(/a{3}|b+/g, '!');
W wyniku do zmiennej zostanie zapisane następujące:
'! ! ! ! axx'
Przykład
W tym przykładzie wzorzec wyszukiwania jest następujący: jedna lub więcej liter lub trzy cyfry:
let str = 'a ab abc 1 12 123';
let res = str.replace(/[a-z]+|\d{3}/g, '!');
W wyniku do zmiennej zostanie zapisane następujące:
'! ! ! 1 12 !'
Przykład
Pionowa kreska może dzielić wyrażenie regularne nie na dwie części, ale na dowolną liczbę części:
let str = 'aaa bbb ccc ddd';
let res = str.replace(/a+|b+|c+/g, '!');
W wyniku do zmiennej zostanie zapisane następujące:
'! ! ! ddd'
Przykład
Jeśli pionowa kreska znajduje się wewnątrz okrągłych
nawiasów, to 'lub' działa tylko wewnątrz
tych nawiasów.
Jako przykład znajdźmy ciągi znaków według następującego
wzorca: na początku znajduje się lub 'a',
lub 'b' jeden lub więcej razy, a potem
dwie litery 'x':
let str = 'axx bxx bbxx exx';
let res = str.replace(/(a|b+)xx/g, '!');
W wyniku do zmiennej zostanie zapisane następujące:
'! ! ! exx'
Zadania praktyczne
Dany jest ciąg znaków:
let str = 'aeeea aeea aea axa axxa axxxa';
Napisz wyrażenie regularne, które znajdzie ciągi znaków
według wzorca: na brzegach znajdują się litery 'a',
a pomiędzy nimi - lub litera 'e' dowolną
liczbę razy lub litera 'x' dowolną
liczbę razy.
Dany jest ciąg znaków:
let str = 'aeeea aeea aea axa axxa axxxa';
Napisz wyrażenie regularne, które znajdzie ciągi znaków
według wzorca: na brzegach znajdują się litery 'a',
a pomiędzy nimi - lub litera 'e' dwa razy
lub litera 'x' dowolną liczbę razy.