Введение в регулярные выражения в 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'.