Команда 'или' в регулярните изрази на JavaScript

В този урок ще разгледаме командата '|', която представлява по- мощна версия на 'или' в сравнение с командата [ ]. Тази команда позволява да разделим регулярния израз на няколко части. При това търсеното може да отговаря или на едната част от регулярния израз, или на другата. Нека разгледаме примери.

Пример

В този пример шаблонът за търсене е: три букви 'a' или три букви 'b':

javascriptlet str = 'aaa bbb abb';
let res = str.replace(/a{3}|b{3}/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! abb'

Пример

В този пример шаблонът за търсене е: три букви 'a' или от 1 и повече букви 'b':

javascriptlet str = 'aaa bbb bbbb bbbbb axx';
let res = str.replace(/a{3}|b+/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! ! ! axx'

Пример

В този пример шаблонът за търсене е: една или повече букви или три цифри:

javascriptlet str = 'a ab abc 1 12 123';
let res = str.replace(/[a-z]+|\d{3}/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! ! 1 12 !'

Пример

Вертикалната черта може да раздели регулярния израз не на две части, а на произволен брой части:

javascriptlet str = 'aaa bbb ccc ddd';
let res = str.replace(/a+|b+|c+/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! ! ddd'

Пример

Ако вертикалната черта стои вътре в кръгли скоби, то 'или' работи само вътре в тези скоби.

Като пример нека намерим низове по следния шаблон: в началото стои или 'a', или 'b' един или повече пъти, а след това две букви 'x':

javascriptlet str = 'axx bxx bbxx exx';
let res = str.replace(/(a|b+)xx/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! ! exx'

Практически задачи

Задание 1

Даден е низът:

javascriptlet str = 'aeeea aeea aea axa axxa axxxa';

Напишете регулярен израз, който ще намери низовете по шаблон: по краищата стоят букви 'a', а между тях - или буквата 'e' произволен брой пъти или буквата 'x' произволен брой пъти.

Задание 2

Даден е низът:

javascriptlet str = 'aeeea aeea aea axa axxa axxxa';

Напишете регулярен израз, който ще намери низовете по шаблон: по краищата стоят букви 'a', а между тях - или буквата 'e' два пъти или буквата 'x' произволен брой пъти.