Бывают ситуации, когда мы хотим указать,
что символ повторяется заданное количество
раз. Если мы знаем точное число повторений,
то можно просто написать его несколько раз
- /aaaa/
. Но что делать, если мы хотим
сказать такое: 'повторить один или более
раз'
?
Для этого существуют операторы (квантификаторы)
повторения: плюс +
(один и более раз),
звездочка *
(ноль или более раз) и
вопрос ?
(ноль или один раз). Эти
операторы действуют на тот символ, который
стоит перед ними.
Давайте посмотрим на работу этих операторов на примерах.
Пример
Найдем все подстроки по шаблону буква
'x'
, буква 'a'
один или более
раз, буква 'x'
:
let str = 'xx xax xaax xaaax xbx';
let res = str.replace(/xa+x/g, '!');
В результате в переменную res запишется следующее:
'xx ! ! ! xbx'
Пример
Найдем все подстроки по шаблону буква
'x'
, буква 'a'
ноль или более
раз, буква 'x'
:
let str = 'xx xax xaax xaaax xbx'
let res = str.replace(/xa*x/g, '!');
В результате в переменную запишется следующее:
'! ! ! ! xbx'
Пример
Найдем все подстроки по шаблону буква
'x'
, буква 'a'
ноль или один
раз, буква 'x'
:
let str = 'xx xax xaax xbx';
let res = str.replace(/xa?x/g, '!');
В результате в переменную запишется следующее:
'! ! xaax xbx'
Практические задачи
Дана строка:
let str = 'aa aba abba abbba abca abea';
Напишите регулярку, которая найдет строки
'aba'
, 'abba'
, 'abbba'
по шаблону: буква 'a'
, буква 'b'
любое количество раз, буква 'a'
.
Дана строка:
let str = 'aa aba abba abbba abca abea';
Напишите регулярку, которая найдет строки
'aa'
, 'aba'
, 'abba'
,
'abbba'
по шаблону: буква 'a'
,
буква 'b'
любое количество раз (в
том числе ниодного раза), буква 'a'
.
Дана строка:
let str = 'aa aba abba abbba abca abea';
Напишите регулярку, которая найдет строки
'aa'
, 'aba'
по шаблону: буква
'a'
, буква 'b'
один раз или
ниодного, буква 'a'
.
Дана строка:
let str = 'aa aba abba abbba abca abea';
Напишите регулярку, которая найдет строки
'aa'
, 'aba'
, 'abba'
,
'abbba'
, не захватив 'abca'
и 'abea'
.