Текст
Regex Tester / Find & Replace
Проверка регулярных выражений на реальном тексте: подсвеченные совпадения и разобранные группы захвата, либо замена найденных совпадений на новый текст.
Regex (регулярное выражение) — компактный язык для описания шаблонов в тексте: поиск, проверка формата или замена. Инструмент показывает совпадения на реальном тексте сразу во время набора выражения, подсвечивает группы захвата и поддерживает режим замены.
Как пользоваться
- Поиск: введите выражение и тестовый текст — все совпадения подсветятся, а группы захвата разберутся отдельно.
- Замена: переключитесь в режим Replace, укажите шаблон замены (со ссылкой на группы $1, $2) и получите результат сразу.
- Флаги (g, i, m, s) включаются отдельно и сразу влияют на количество и способ поиска совпадений.
Типичные сценарии
- Подбор и отладка regex перед вставкой в код — виден результат без запуска программы.
- Массовая замена текста по шаблону (например, форматирование номеров телефонов или дат).
- Валидация формата входных данных (email, номер карты, slug) на примерах.
Что стоит помнить
Жадные квантификаторы (*, +) захватывают как можно больше символов — если нужно минимальное совпадение, добавьте ? (например, .*? вместо .*).
Синтаксис немного отличается между языками программирования — выражение, работающее здесь (движок JavaScript), может потребовать адаптации для PCRE, .NET или Python.
Статья об этом инструменте: Регулярные выражения: основной синтаксис и типичные паттерны
Часто задаваемые вопросы
Какой движок regex используется?
Инструмент использует движок regex JavaScript, а не PCRE, поэтому некоторый специфичный для PCRE синтаксис (как рекурсивные утверждения или определённые режимы посессивного сопоставления) здесь не будет работать; поддерживаются распространённые флаги, такие как g, i, m, s и u.
В чём разница между жадными и ленивыми квантификаторами, и между Test и Replace?
Жадный квантификатор, как * или +, захватывает как можно больше текста, тогда как его ленивая версия (*?, +?) останавливается как можно раньше; что касается режимов, Test подсвечивает совпадения и перечисляет группы захвата (включая именованные), а Replace применяет замещающий текст, со ссылками вроде $1, к каждому совпадению.
Отправляются ли мой текст и выражение на сервер?
Нет, вычисление регулярного выражения полностью происходит на стороне клиента в вашем браузере, ничего не передаётся онлайн.
Что такое катастрофический backtracking?
Вложенные квантификаторы вроде (a+)+ могут на определённых входных строках заставить движок перебирать экспоненциальное количество комбинаций — страница или скрипт «зависают» на, казалось бы, простом выражении. Это реальная уязвимость (ReDoS), поэтому сложные вложенные квантификаторы стоит тестировать на длинных почти совпадающих строках.
Почему моё выражение работает в одном языке программирования, но не в другом?
Синтаксис regex не полностью стандартизирован: PCRE (PHP, многие другие языки), .NET, Python re и JavaScript имеют небольшие отличия в поддержке определённых конструкций (например, look-behind или именованных групп) — выражение, написанное для одного движка, не всегда без изменений работает в другом.