IT Market
Инструменты/Веб/Разработка/Проверка регулярных выражений онлайн — тестер
Regex Tester

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

Коротко об инструменте

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

Регулярное выражение редко пишется верно с первого раза: то шаблон захватывает лишнее, то не срабатывает на реальной строке из выгрузки. Здесь вы вводите шаблон, флаги и кусок настоящего текста и сразу видите, что именно он нашёл, — не перезапуская скрипт ради одной проверки. Работает движок вашего браузера, тот же, что в Node.js, поэтому проверенный шаблон переносится в JavaScript без изменений. Текст остаётся на странице. Смотрите также: проверить и отформатировать JSON, вырезать HTML-теги из текста, закодировать строку для URL.

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

  1. Впишите шаблон в поле «Регулярное выражение» без обрамляющих слэшей — например \d+ для последовательностей цифр.
  2. Задайте набор флагов в поле «Флаги (g, i, m)»: g ищет все совпадения, i отключает учёт регистра, m переносит ^ и $ на границы строк.
  3. Вставьте настоящий фрагмент данных в поле «Тестовый текст» — лог, строку CSV, пару адресов почты, а не выдуманный пример. HTML и скрипты внутри показываются буквально, страница их не исполняет.
  4. Нажмите «Тестировать» и сверьте список найденных совпадений с тем, что вы ожидали получить.
  5. Если совпадений слишком много, сузьте шаблон границами слова \b или якорями ^ и $ и проверьте снова.
  6. Готовый шаблон переносите в код как есть: синтаксис здесь тот же, что у конструктора RegExp в JavaScript.

Вопросы и ответы

Какой диалект регулярных выражений используется — PCRE или JavaScript?

JavaScript: шаблон передаётся в конструктор RegExp вашего браузера. Отличия от PCRE заметны на именованных группах, модификаторах внутри выражения вроде (?i) и рекурсии — их в JavaScript нет. Шаблоны для PHP, Python или grep часто работают и здесь, но при расхождении верить нужно тому движку, в котором выражение в итоге будет исполняться.

Почему \d и \w не находят русские буквы и цифры?

В JavaScript без флага u класс \w эквивалентен [A-Za-z0-9_], то есть кириллица в него не входит; \d — это только ASCII-цифры 0-9. Для русского текста добавьте диапазон явно: [а-яА-ЯёЁ], причём ё и Ё нужно перечислять отдельно, они не лежат внутри диапазона а-я. Более общий вариант — флаг u и свойство \p{L}.

Нужно ли обрамлять шаблон слэшами, как /\d+/g?

Нет. Слэши и буквы флагов после них — это литеральная запись регулярного выражения в коде JavaScript, а здесь шаблон и флаги разнесены по двум разным полям. Введите \d+ в поле «Регулярное выражение» и g в поле «Флаги (g, i, m)». Если оставить слэши, они будут восприняты как обычные символы и совпадений не будет.

Что делает флаг g и почему без него находится только одно совпадение?

Флаг g — глобальный поиск: движок продолжает искать после первого найденного фрагмента и возвращает все вхождения. Без него результат ограничен первым совпадением, что удобно для проверки формата целиком, но бесполезно при сборе данных из текста. Не путайте совпадения со скобками: шаблон (a)(b) на строке ab без флагов даёт одно совпадение, а содержимое скобок показано отдельным списком групп. По умолчанию в поле флагов уже стоит g, потому что этот режим нужен чаще.

Почему выражение зависает или страница перестаёт отвечать?

Виноват катастрофический бэктрекинг: вложенные квантификаторы вроде (a+)+ или (\s*\w+)* на неподходящей строке заставляют движок перебирать экспоненциальное число вариантов. Прервать можно перезагрузкой вкладки. Лечится ограничением повторений и заменой .* на более узкие классы вроде [^"]* — та же проблема на сервере называется ReDoS.

Можно ли проверять здесь текст с рабочими данными?

Проверка выполняется скриптом на самой странице: ни шаблон, ни содержимое поля «Тестовый текст» не уходят с вашего устройства и нигде не сохраняются. Формально это позволяет вставлять внутренние логи. Но здравый смысл не отменяется — пароли и полные номера карт лучше заменять на выдуманные значения такой же длины и формы.

Показывает ли инструмент содержимое групп захвата?

Да. Под списком совпадений идёт отдельный блок с группами захвата по номерам, так что видно, что попало в каждые скобки, а не только найденный фрагмент целиком. Счётчик при этом считает именно совпадения: (\d+)-(\d+) на строке 10-20 — это одно совпадение и две группы, а не три результата. Если группа в совпадении не участвовала, на её месте будет пусто.

Примеры

Сбор адресов почты из выгрузки
До: Шаблон [\w.-]+@[\w-]+\.[a-z]{2,}, флаги gi, текст: «Пишите на [email protected] или в копию [email protected]»
После: Найдено 2 совпадения: [email protected], [email protected]
Разбор строки лога nginx
До: Шаблон \d{1,3}(\.\d{1,3}){3}, флаг g, текст: «10.0.0.5 - - [06/Sep/2026] "GET / HTTP/1.1" 200»
После: Найдено 1 совпадение: 10.0.0.5
Кириллица и почему \w здесь не годится
До: Шаблон [\wа-яА-ЯёЁ]+, флаг g, текст: «Заказ №15 от Иванова»
После: Найдено 4 совпадения: Заказ, 15, от, Иванова