Regex-тестер

Тестируйте JavaScript-регулярки на любой строке и сразу видите совпадения с подсветкой. Группы, флаги и позиции — в списке снизу.

Используется встроенный RegExp браузера, так что результат совпадает с тем, что выполнит ваш JS-код.

С подсветкой

Highlighted matches will appear here.

Совпадения

Match list with capture groups will appear here.
Edit the pattern or test string, then press Test (Cmd/Ctrl+Enter).

Сорт JavaScript

Этот тестер использует встроенный RegExp браузера. Он поддерживает синтаксис регулярок ECMAScript, который не совпадает с PCRE (PHP, Perl) или Python re. Некоторые конструкции из других движков недоступны или ведут себя иначе:

  • No possessive quantifiers (a*+, a++).
  • No atomic groups (?>...).
  • No conditional patterns (?(1)yes|no).
  • Lookbehind (?<=...) is supported in modern browsers but can fail in older engines.
  • Named groups use (?<name>...) (not (?P<name>...) like Python).

Справка по флагам

  • g — return all matches, not just the first.
  • i — case-insensitive match.
  • m^ and $ match at line breaks, not only string edges.
  • s — dot . also matches newlines.
  • u — full Unicode mode; \p{...} property escapes enabled.
  • y — sticky: match must start exactly at lastIndex.

Примеры

Несколько паттернов, которые можно вставить в поле выше, чтобы увидеть, как они работают:

\d{4}-\d{2}-\d{2}            # ISO-like dates
[\w.+-]+@[\w-]+\.[\w.-]+     # rough email
^https?:\/\/\S+              # URL at line start (needs m flag)
(?<year>\d{4})-(?<mo>\d{2})  # named groups

Частые вопросы

Почему мой паттерн, работающий в PHP/Python, здесь падает?

Этот тестер прогоняет паттерн через браузерный RegExp — это ECMAScript flavor. PCRE-фичи (possessive-квантификаторы, атомарные группы, conditional patterns) не поддерживаются. Перепишите паттерн в форме ECMAScript.

Мой паттерн на секунду заморозил страницу. Почему?

Движок regex в JavaScript однопоточный и может тормозить на паттернах с catastrophic backtracking (например, вложенные квантификаторы вроде (a+)+$). Инструмент ограничивает список матчей до 1000, чтобы уменьшить ущерб, но сам матч всё равно идёт на странице.

Как сопоставлять по нескольким строкам?

Используйте флаг s, чтобы . сопоставлялся с переводами строк, и флаг m, чтобы ^/$ привязывались к каждой строке.

Отправляются ли мой паттерн и тестовый текст куда-нибудь?

Нет. Регулярка прогоняется целиком в браузере. Ничего не загружается.

Связанные инструменты