Фигурные скобки в регулярных выражениях JavaScript
Операторы '+', '*', '?'
хороши, однако, с их помощью нельзя указать
конкретное число повторений. В этом случае
вам на помощь придет оператор {}.
Работает он следующим образом: {5}
- пять повторений, {2,5} – повторяется
от двух до пяти (оба включительно), {2,}
- повторяется два и более раз. Обратите внимание
на то, что такого варианта - {,2}
- нет. Посмотрите примеры:
Пример
В данном примере шаблон поиска выглядит так:
буква 'x', буква 'a' один
или два раза, буква 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
В результате в переменную запишется следующее:
'xx ! ! xaaax'
Пример
В данном примере шаблон поиска выглядит так:
буква 'x', буква 'a' два
раза и более, буква 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
В результате в переменную запишется следующее:
'xx xax ! !'
Пример
В данном примере шаблон поиска выглядит так:
буква 'x', буква 'a' три
раза, буква 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
В результате в переменную запишется следующее:
'xx xax xaax !'
Пример
В данном примере шаблон поиска выглядит так:
буква 'a' десять раз:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
В результате в переменную запишется следующее:
'aaa ! aaa'
Пример
В данном примере автор кода хотел такой шаблон:
буква 'x', буква 'a' три
раза раза и меньше, буква 'x',
но, к сожалению, такое - {,3} - не работает.
Нужно указать явно:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
В результате в переменную запишется следующее:
'xx ! ! !'
Пример
Ноль тоже допустим:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
В результате в переменную запишется следующее:
'! ! ! !'
Практические задачи
Дана строка:
let str = 'aa aba abba abbba abbbba abbbbba';
Напишите регулярку, которая найдет строки
'abba', 'abbba', 'abbbba'
и только их.
Дана строка:
let str = 'aa aba abba abbba abbbba abbbbba';
Напишите регулярку, которая найдет строки
вида 'aba', в которых 'b' встречается
менее 3-х раз (включительно).
Дана строка:
let str = 'aa aba abba abbba abbbba abbbbba';
Напишите регулярку, которая найдет строки
вида 'aba', в которых 'b' встречается
более 4-х раз (включительно).