# Операторы повторения символов в регулярках

Бывают ситуации, когда мы хотим указать, что символ повторяется заданное количество раз. Если мы знаем точное число повторений, то можно просто написать его несколько раз - `/aaaa/`. Но что делать, если мы хотим сказать такое: повторить один или более раз?

Для этого существуют операторы (квантификаторы) повторения: плюс `+` (один и более раз), звездочка `*` (ноль или более раз) и вопрос `?` (ноль или один раз). Эти операторы действуют на тот символ, который стоит перед ними.

Давайте посмотрим на работу этих операторов на примерах.

## Пример

Найдем все подстроки по шаблону буква `'x'`, буква `'a'` один или более раз, буква `'x'`:

`let str = 'xx xax xaax xaaax xbx'; let res = str.replace(/xa+x/g, '!');`

В результате в переменную запишется следующее:

`'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'`.

← →
↑
en ru