Regex Тестер онлайн

Проверяйте регулярные выражения в реальном времени. Подсветка совпадений и группы.

g глобальный
i без регистра
m многострочный
s dotAll
Столото

Полезные статьи

Жадные и ленивые квантификаторы: почему «.*» ведёт себя странно

Во многих движках по умолчанию .* жадный: он съедает максимум символов, а потом движок откатывается назад, чтобы найти совпадение остального шаблона. Отсюда сюрпризы вроде «захватил всю строку до последней кавычки». Ленивая форма .*? останавливается при первом успехе — но и она не волшебная, если дальше в шаблоне есть неоднозначность.

Тестер с подсветкой групп помогает увидеть, какой именно кусок строки съел квантификатор, вместо чтения десяти страниц документации.

  • Для HTML лучше парсер DOM, а не regex — контекст вложенности regex не понимает.
  • Якоря ^ и $ зависят от режима многострочности.
  • Границы слова \b ломаются на кириллице в зависимости от движка и Unicode.
  • Избегайте катастрофического backtracking в вложенных квантификаторах.
  • Флаги i, m, s меняют смысл точки и регистра.

Гоняйте на тестере не только «счастливый» пример, но и пустую строку, строку без совпадения и очень длинную строку.

Группы, обратные ссылки и именованные группы

Скобки (...) создают группу захвата — удобно для извлечения частей в коде. Цена — память и скорость на длинных текстах. Некоторые движки поддерживают (?:...) без захвата для чистой группировки альтернатив.

Именованные группы (?<name>...) улучшают читаемость в Python и PCRE, но синтаксис чуть отличается в .NET и Java.

  • Нумерация групп слева направо, вложенные считаются отдельно.
  • Обратная ссылка \1 в шаблоне и $1 в замене — разные контексты.
  • Атомарные группы и possessive квантификаторы есть не везде.
  • Lookahead (?=) не двигает «курсор», что полезно для проверок формата.

Онлайн-тестер экономит цикл «написал в коде — запустил билд — увидел ошибку».

Unicode, классы символов и нормализация

Буква «ё» и «е», визуально похожие символы из разных скриптов, ломают наивные фильтры. Unicode property escapes \p{L} поддерживаются в JavaScript только с флагом u. NFC vs NFD влияет на совпадение «одной буквы» из двух кодпоинтов.

Если ваш тестер не совпадает с продакшеном, сравните версии движка: браузер, Rust regex, RE2.

  • Нормализуйте вход NFC перед матчингом, если политика продукта такая.
  • Для цифр в разных алфавитах используйте \p{Nd} вместо [0-9].
  • Границы графем \b{g} есть не везде — проверяйте.
  • Флаг u в JS включает правильную работу . с плоскостями Unicode.

Кладите в поле теста реальные логи с эмодзи и RTL — редкие баги всплывают именно там.

Безопасность: ReDoS и пользовательские шаблоны

Регулярное выражение из пользовательского ввода на сервере без таймаута — классический вектор ReDoS. Ограничивайте длину строки, время выполнения и класс движка (линейный по времени, где возможно).

На клиенте бесконечный цикл в regex всё равно повесит вкладку — не гоняйте мегабайты текста в синхронном UI-потоке.

  • Используйте библиотеки с линейным временем для фильтров в шлюзе.
  • Логируйте только факт ошибки, не весь ввод с PII.
  • Для валидации email и URL лучше специализированные парсеры.
  • Проводите code review для regex без комментариев — добавьте free-spacing режим.

Тестер на сайте предназначен для обучения и отладки, а не для публичного сервиса исполнения произвольных regex на ваших данных.

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

Проверяйте regex на тексте в реальном времени. Совпадения подсвечиваются зелёным. Показываются группы и количество совпадений. Поддерживаются флаги g, i, m, s.

Частые регулярные выражения

Email: \b[\w.]+@[\w.]+\.\w+\b. Телефон: \+7[\d\s()-]{10,}. IP: \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}. Дата: \d{2}\.\d{2}\.\d{4}.