Регулярные выражения - это такие команды для сложного поиска и замены (или просто поиска). Они позволяют делать очень интересные вещи, но, к сожалению, довольно тяжелы в освоении.
Существует несколько методов 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'
.