Регулярные выражения
Регулярное выражение — это шаблон, который описывает, как выглядит нужный текст: «три цифры подряд», «слово из латинских букв», «строка, похожая на email». С его помощью проверяют ввод, находят и заменяют фрагменты. Синтаксис поначалу выглядит загадочно, но базовых символов немного.
Шаблон и метод test
Регулярное выражение записывают между двумя косыми чертами. Метод test() отвечает, есть ли в строке совпадение с шаблоном:
const pattern = /кот/;
console.log(pattern.test('Наш кот спит')); // trueПростой шаблон из букв ищет ровно эти буквы подряд, как includes(). Сила регулярных выражений — в специальных символах.
Классы символов и количество
Специальные символы описывают не конкретную букву, а целую группу. Число после символа в фигурных скобках или знак + задают, сколько раз он повторяется:
const zip = /^\d{5}$/;
console.log(zip.test('10115')); // true
console.log(zip.test('1011')); // falseСимвол ^ означает начало строки, а $ — её конец: шаблон целиком должен совпасть со всей строкой.
| Символ | Что означает |
|---|---|
\d | любая цифра |
\w | латинская буква, цифра или _ |
\s | пробельный символ |
. | любой символ |
[абв] | один из перечисленных |
+ | один раз или больше |
* | ноль раз или больше |
{3} | ровно три раза |
^ и $ | начало и конец строки |
Флаги
После закрывающей черты пишут флаги — буквы, которые меняют поведение поиска. Флаг i отключает учёт регистра, а g ищет все совпадения, а не только первое:
console.log(/привет/i.test('ПРИВЕТ, мир')); // trueПоиск совпадений
Метод строки match() с флагом g возвращает массив всех найденных фрагментов. Если совпадений нет, он вернёт null:
const text = 'Заказы 12, 7 и 105';
const numbers = text.match(/\d+/g);
console.log(numbers.join(', ')); // 12, 7, 105Замена по шаблону
replace() принимает регулярное выражение вместо строки. С флагом g заменяются все совпадения:
const phone = '+7 (900) 123-45-67';
console.log(phone.replace(/\D/g, '')); // 79001234567Заглавная \D — противоположность \d: «любой символ, кроме цифры». Так из номера удаляется всё лишнее.
Группы
Круглые скобки выделяют в шаблоне группу — часть совпадения, которую можно получить отдельно. Без флага g метод match() возвращает массив, где после всего совпадения идут группы:
const date = '2026-03-08';
const parts = date.match(/(\d{4})-(\d{2})-(\d{2})/);
console.log(parts[1]); // 2026
console.log(parts[3]); // 08Частая ошибка
Точка, плюс, скобки и некоторые другие знаки в шаблоне — специальные символы. Чтобы найти сам символ, перед ним ставят обратную косую черту:
console.log(/a.c/.test('abc')); // true
console.log(/a\.c/.test('abc')); // false
console.log(/a\.c/.test('a.c')); // trueШаблон /a.c/ совпал с abc, потому что точка означает «любой символ». Ищете точку в адресе сайта или в цене — пишите \..