К основному содержанию

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

Введите паттерн и текст — совпадения подсветятся сразу, группы разберутся в таблицу. Режимы «Замена» и «Разбить», пресеты частых регулярок и шпаргалка синтаксиса. Движок — JavaScript.

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

флаги
пресеты:

    

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

  1. Введите регулярное выражение без обрамляющих слэшей в поле Паттерн и отметьте флаги: g — все совпадения, i — без учёта регистра, m — многострочный, s, u, y.
  2. Вставьте текст, на котором проверяете. Совпадения подсветятся сразу, ниже появится таблица с позицией и группами захвата — нумерованными и именованными.
  3. Переключите режим на Замена, чтобы увидеть результат replace (в поле замены работают $1, $<name>, $&), или на Разбить, чтобы получить массив split.
  4. Кнопки-пресеты подставляют готовую регулярку с примером текста: email, URL, телефон РФ, IPv4, дата ISO, UTM-параметры, домен, число.
  5. Ошибка синтаксиса показывается красным с текстом движка; статистика внизу — число совпадений и время выполнения в миллисекундах.

Какой движок и чем он отличается от PCRE

Тестер использует встроенный движок регулярных выражений JavaScript (ECMAScript 2018+) — тот же, что в браузере и Node.js. Он покажет ровно то, что даст JS-код; с PHP (PCRE), Python (re) и Go (RE2) есть отличия.

Что поддержано: именованные группы (?<name>…) и ссылки \k<name>, lookahead (?=…) / (?!…), lookbehind (?<=…) / (?<!…), классы Unicode \p{L}, \p{Script=Cyrillic} с флагом u, ленивые квантификаторы *?, +?, флаг s (точка ловит перенос строки), sticky-флаг y.

Чего нет: атомарных групп (?>…) и посессивных квантификаторов a++, рекурсии (?R), условий (?(1)…), флага x для комментариев, модификаторов внутри паттерна (?i). Класс \w в JS — только ASCII ([A-Za-z0-9_]), кириллица под него не попадает: для русских слов берите [\p{L}\p{M}]+ с флагом u. Границы слова \b тоже считаются по ASCII.

Зачем арбитражнику и маркетологу

  • Фильтры в трекерах и Google Ads: правила по URL, referer, subid — проверить регулярку до того, как она отсеет половину трафика.
  • Чистка выгрузок: вытащить из логов email, телефоны, click_id или UTM-метки; режим «Замена» — мини-скрипт очистки текста.
  • Валидация форм на лендинге: телефон РФ, промокод — тот же паттерн пойдёт в pattern="" или JS-валидатор.

Шпаргалка по синтаксису

КонструкцияЧто значитПример
.любой символ, кроме переноса строки (с флагом s — и он тоже)a.c → abc, a-c
\d \w \sцифра, символ слова (ASCII), пробельный; заглавные — отрицание\d{3}-\d{2}
[абв] [^0-9] [а-я]класс символов, отрицание, диапазон[A-Za-z0-9_-]+
* + ? {n,m}0+, 1+, 0–1, от n до m повторений; ? после — ленивый\d+?
^ $ \bначало и конец строки (с m — каждой), граница слова^https?://
(…) (?:…) (?<n>…)группа захвата, без захвата, именованная(?<host>[\w.-]+)
a|bальтернативаjpe?g|png|webp
(?=…) (?!…) (?<=…) (?<!…)опережающая и ретроспективная проверки\d+(?=\s?руб)
\1 $1 $<n>ссылка на группу в паттерне; в замене — $1, $<n>, $& (всё совпадение)(\w+)@(\w+)$2:$1
\p{L} \p{Script=Cyrillic}категории и письменности Unicode, только с флагом u; короткая запись \p{Cyrillic} в JS не работает[\p{Script=Cyrillic}]+

Про зависания и большие тексты

Вложенные квантификаторы вроде (a+)+$ или (\w*\s*)* дают катастрофический бэктрекинг: время растёт экспоненциально, вкладка замирает. Тестер предупреждает о таких паттернах, ограничивает текст 200 000 символами и запускает вычисление отложенно, показывая «считаю…». Если паттерн всё же завис, поможет только закрыть вкладку — JS-регулярку нельзя прервать изнутри.

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

На каком движке работает тестер регулярных выражений?

На встроенном движке JavaScript вашего браузера (ECMAScript). Результат один в один совпадает с тем, что даст new RegExp() в JS и Node.js. Для PHP/PCRE и Python возможны отличия — они перечислены в разделе выше.

Почему регулярка не находит русские слова через \w?

В JavaScript \w — это только [A-Za-z0-9_]. Для кириллицы используйте [а-яёА-ЯЁ]+ или Unicode-класс [\p{L}]+ с включённым флагом u.

Как найти все совпадения, а не только первое?

Включите флаг g (global) — он стоит по умолчанию. Без него движок останавливается на первом совпадении, а replace заменяет только его.

Что означают $1 и $<name> в поле замены?

$1, $2 — содержимое нумерованных групп захвата, $<name> — именованной группы, $& — всё совпадение целиком, $$ — знак доллара. Это стандартный синтаксис String.prototype.replace.

Отправляется ли мой текст на сервер?

Нет. Паттерн и текст обрабатываются JavaScript-кодом в браузере и никуда не уходят; последний ввод сохраняется только в localStorage вашего браузера, чтобы не потерять его при перезагрузке.

Регулярка «зависла» — что делать?

Скорее всего, паттерн с вложенными квантификаторами столкнулся с текстом, на котором бэктрекинг растёт экспоненциально. Упростите паттерн: замените (a+)+ на a+, добавьте якоря ^/$, уберите пересекающиеся альтернативы. Тестер предупреждает о рискованных конструкциях заранее.

Спонсоры проекта

Компании, которые помогают держать аналитику открытой
свежие базы — в канале Подписаться на канал