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