# Введение в регулярные выражения в JavaScript

Регулярные выражения - это такие команды для сложного поиска и замены (или просто поиска). Они позволяют делать очень интересные вещи, но, к сожалению, довольно тяжелы в освоении.

Существует несколько методов JavaScript для работы с регулярными выражениями. Мы начнем знакомится с ними на примере `replace` - вы уже знакомы с этим методом: он первым параметром принимает что менять, а вторым - на что менять. А сам метод применяется к строке, в которой производится замена:

`'bab'.replace('a', '!'); // вернет 'b!b'`

Первым параметром этого метода можно передавать не просто строку, а регулярное выражение. Регулярное выражение представляет собой набор команд, расположенных внутри слешей `/`. Эти слеши называются ограничителями регулярных выражений.

Сами регулярные выражения состоят из двух типов символов: из тех, которые обозначают сами себя и из символов-команд, которые называются специальные символы.

Буквы и цифры обозначают сами себя. В следующем примере мы с помощью регулярного выражения заменим букву `'a'` на `!`:

`'bab'.replace(/a/, '!'); // вернет 'b!b'`

А вот точка является специальным символом и обозначает любой символ. В следующем примере мы найдем строку по такому шаблону: буква `'x'`, затем любой символ, затем опять буква `'x'`:

`'xax eee'.replace(/x.x/, '!'); // вернет '! eee'`

После ограничителей можно писать модификаторы - команды, которые изменяют общие свойства регулярного выражения. Например, модификатор `g` включает режим глобального поиска и замены - без него регулярка ищет только первое совпадение, а с ним - все совпадения.

В следующем примере не указан модификатор `g` и регулярка найдет только первое совпадение:

`'aab'.replace(/a/, '!'); // вернет '!ab'`

А теперь регулярка найдет все совпадения:

`'aab'.replace(/a/g, '!'); // вернет '!!b'`

Дана строка:

`let str = 'ahb acb aeb aeeb adcb axeb';`

Напишите регулярку, которая найдет строки `'ahb'`, `'acb'`, `'aeb'` по шаблону: буква `'a'`, любой символ, буква `'b'`.

Дана строка:

`let str = 'aba aca aea abba adca abea';`

Напишите регулярку, которая найдет строки `'abba'`, `'adca'`, `'abea'` по шаблону: буква `'a'`, `2` любых символа, буква `'a'`.

Дана строка:

`let str = 'aba aca aea abba adca abea';`

Напишите регулярку, которая найдет строки `'abba'` и `'abea'`, не захватив `'adca'`.

← →
↑
en ru