Тестер регулярных выражений: проверка regex онлайн

Проверьте регулярное выражение JavaScript на своём тексте: совпадения подсвечиваются, группы (и именованные) — списком, флаги g, i, m, s, u, y — переключателями. Есть замена с $1 и $<имя>.

//g
Флаги

3 совпадения

Версия 2.4 вышла 2026-03-15, исправление — 2026-04-02. Следующий релиз запланирован на 2026-11-30.
#ПозицияСовпадениеГруппы
1172026-03-15
1 year: 2026
2 month: 03
3 day: 15
2432026-04-02
1 year: 2026
2 month: 04
3 day: 02
3872026-11-30
1 year: 2026
2 month: 11
3 day: 30

Как пользоваться

Введите регулярное выражение без косых черт и вставьте текст. Тестер сразу:

Работает настоящий движок регулярных выражений вашего браузера, поэтому результат совпадает с тем, что даст ваш код на JavaScript или TypeScript. Без флага g находится только первое совпадение — так же, как у match и replace. Показываются первые 1000 совпадений.

Текст обрабатывается в браузере и никуда не отправляется.

Флаги

Флаг Что делает
g ищет все совпадения, а не только первое
i не различает заглавные и строчные буквы
m ^ и $ срабатывают в начале и конце каждой строки, а не всего текста
s точка . совпадает и с переносом строки
u режим Юникода: классы \p{…}, символы за пределами BMP (эмодзи) как один символ, строгий синтаксис
y «липкий» поиск: совпадение должно начинаться ровно там, где закончилось предыдущее

Краткая шпаргалка

Шаблон Значение
. любой символ, кроме переноса строки
\d, \w, \s цифра, латинская буква/цифра/_, пробельный символ
\D, \W, \S всё, кроме перечисленного выше
[абв], [^0-9] один из символов; любой, кроме цифр
*, +, ? 0 и больше, 1 и больше, 0 или 1 раз
{2,5} от 2 до 5 раз
*?, +? «ленивые» версии: как можно меньше символов
^, $, \b начало, конец, граница слова
(…), (?<имя>…), (?:…) группа, именованная группа, группа без запоминания
a|b a или b
(?=…), (?!…) дальше идёт / не идёт …
(?<=…), (?<!…) перед этим стоит / не стоит …
\p{L} любая буква любого алфавита (только с флагом u)

Примеры

Числа в тексте. \d+ с флагом g в строке «Заказ 15 на 3 400 ₽» найдёт три совпадения: 15, 3 и 400 — пробел-разделитель разрядов разрывает число.

Повтор слова. (\p{L}+)\s+\1 с флагами giu найдёт «Это это» в «Это это пример, пример»: \1 — ссылка на текст первой группы. Второй повтор не найдётся из-за запятой.

Лишние пробелы. Шаблон \s{2,}, флаг g, замена — один пробел: «слишком много пробелов» → «слишком много пробелов».

Перестановка через именованные группы. Шаблон (?<first>\p{L}+) (?<last>\p{L}+) с флагом u и замена $<last> $<first> превращают «Иван Петров» в «Петров Иван».

Строка замены

Например, шаблон (\d+)-(\d+)-(\d+) с заменой $3.$2.$1 превращает 2026-03-15 в 15.03.2026.

Частые вопросы

Почему \w и \b не работают с русскими словами? В JavaScript \w — это только [A-Za-z0-9_], а \b — граница между такими символами. Для кириллицы используйте \p{L} (любая буква) или [а-яё] с флагом i; для \p{L} нужен флаг u.

Почему без флага g находится только одно совпадение? Так работает JavaScript: str.match(re) и str.replace(re, …) без g обрабатывают только первое совпадение. Тестер повторяет это поведение, чтобы результат совпадал с вашим кодом.

Страница написала, что расчёт остановлен. Что это значит? Некоторые выражения, например (a+)+$, на неподходящей строке перебирают варианты экспоненциально долго — это называется катастрофическим перебором (ReDoS). Тестер считает в отдельном потоке и останавливает его через 2 секунды, чтобы страница не зависла. В рабочем коде такое выражение стоит переписать: убрать вложенные квантификаторы.

Подойдёт ли это для регулярных выражений Python, PHP или Java? Базовый синтаксис общий, но есть различия: в JavaScript нет притяжательных квантификаторов a++ и атомарных групп, флаги задаются иначе, а у Python именованная группа пишется (?P<имя>…). Простые выражения работают одинаково.

Разбить текст на строки и убрать дубли можно в обработке списка строк, а сравнить два варианта текста — в сравнении текстов.