Текст
Regex Tester / Find & Replace
Проверка регулярных выражений на реальном тексте: подсвеченные совпадения и разобранные группы захвата, либо замена найденных совпадений на новый текст.
A regular expression (regex) is a compact language for describing patterns in text — for searching, validating a format, or replacing matches. This tool highlights matches in real text as you type the pattern, breaks out capture groups, and supports a find-and-replace mode.
How to use it
- Search: enter a pattern and some test text — every match is highlighted and capture groups are broken out separately.
- Replace: switch to Replace mode, provide a replacement template (referencing groups with $1, $2), and see the result instantly.
- Flags (g, i, m, s) toggle independently and immediately affect how many matches are found and how.
Common uses
- Building and debugging a regex before pasting it into code — you see the result without running the program.
- Bulk find-and-replace against a pattern (e.g. reformatting phone numbers or dates).
- Validating an input format (email, card number, slug) against real examples.
Things to keep in mind
Greedy quantifiers (*, +) grab as many characters as possible — add ? for the minimal match instead (e.g. .*? instead of .*).
Syntax varies slightly between languages — an expression that works here (a JavaScript engine) may need adjusting for PCRE, .NET, or 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 или именованных групп) — выражение, написанное для одного движка, не всегда без изменений работает в другом.