В данном уроке мы разберем команду
'|', которая представляет собой более
мощный вариант 'или' по сравнению
с командой [ ]. Данная команда позволяет
разделить регулярку на несколько частей.
При этом искомое может попасть либо под одну
часть регулярки, либо под другую. Давайте
посмотрим на примерах.
Пример
В данном примере шаблон поиска такой: три
буквы 'a' или три буквы 'b':
let str = 'aaa bbb abb';
let res = str.replace(/a{3}|b{3}/g, '!');
В результате в переменную запишется следующее:
'! ! abb'
Пример
В данном примере шаблон поиска такой: три
буквы 'a' или от 1 и более
букв 'b':
let str = 'aaa bbb bbbb bbbbb axx';
let res = str.replace(/a{3}|b+/g, '!');
В результате в переменную запишется следующее:
'! ! ! ! axx'
Пример
В данном примере шаблон поиска такой: одна или более буквы или три цифры:
let str = 'a ab abc 1 12 123';
let res = str.replace(/[a-z]+|\d{3}/g, '!');
В результате в переменную запишется следующее:
'! ! ! 1 12 !'
Пример
Вертикальная черта может делить регулярку не на две части, а на любое количество частей:
let str = 'aaa bbb ccc ddd';
let res = str.replace(/a+|b+|c+/g, '!');
В результате в переменную запишется следующее:
'! ! ! ddd'
Пример
Если вертикальная черта стоит внутри круглых
скобок, то 'или' работает только внутри
этих скобок.
Для примера давайте найдем строки по следующему
шаблону: в начале стоит или 'a',
или 'b' один или более раз, а потом
две буквы 'x':
let str = 'axx bxx bbxx exx';
let res = str.replace(/(a|b+)xx/g, '!');
В результате в переменную запишется следующее:
'! ! ! exx'
Практические задачи
Дана строка:
let str = 'aeeea aeea aea axa axxa axxxa';
Напишите регулярку, которая найдет строки
по шаблону: по краям стоят буквы 'a',
а между ними - или буква 'e' любое
количество раз или буква 'x' любое
количество раз.
Дана строка:
let str = 'aeeea aeea aea axa axxa axxxa';
Напишите регулярку, которая найдет строки
по шаблону: по краям стоят буквы 'a',
а между ними - или буква 'e' два раза
или буква 'x' любое количество раз.