Перейти к содержанию

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

Разберите регулярное выражение на части по-английски, один кусок за раз.

Входные данные
Выходные данные

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

Вставьте регулярное выражение, и этот инструмент разберёт его на части, превращая криптичный синтаксис типа ^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$ в пошаговое объяснение на простом языке о том, что именно совпадает каждая часть. Он принимает как голый паттерн, так и полный литерал /pattern/flags, поэтому вы можете вставить именно то, что скопировали из редактора кода, библиотеки валидации или старого ответа на Stack Overflow.

Включите «Объяснить флаги» для построчного смысла g, i, m, s, u и остального; «Показать группы захвата и именованные группы» чтобы увидеть каждую (…) с первого взгляда — полезно, когда паттерн содержит больше групп, чем вы можете сосчитать; «Предупредить о риске backtracking» чтобы отметить вложенное неограниченное повторение — классическую форму (a+)+, которая может заморозить движок regex на неправильном входе; «Предложить более простую нотацию» для простых переписей типа [0-9] в \d; и «Сгенерировать пример совпадения» чтобы получить короткую строку, которую паттерн действительно принимает, полезно как быстрая проверка корректности. Выберите режим отображения дерева или нумерованные шаги, а также диалект JavaScript, PCRE или Python для примечаний о синтаксисе именованных групп и притяжательных кванторах.

Парсер написан с нуля, а не заимствован из отдельного движка, поэтому его объяснения остаются согласованными между диалектами и он корректно справляется с экранированными символами, кодовыми точками Unicode и эмодзи внутри литерального текста — ничего не разбивается на неправильные части.

Всё работает локально в вашем браузере. Паттерн, построенный вокруг формата ключа API или валидатора персональных данных, никогда не покидает вашу машину. Скопируйте объяснение, загрузите его как текстовый файл или отправьте результат обратно на вход для исследования связанного паттерна.

FAQ

Какой диалект regex выбрать?
JavaScript охватывает то, что действительно работает в браузере; переключитесь на PCRE или Python только когда вам нужны примечания, специфичные для диалекта, о синтаксисе именованных групп и притяжательных кванторах — само разбиение читает один и тот же паттерн одинаково во всех трёх диалектах.
Может ли он поймать все паттерны катастрофического backtracking?
Нет. Он помечает наиболее частую причину — вложенное неограниченное повторение типа (a+)+ — как эвристику. Рассматривайте предупреждение как стоящее более пристального взгляда, не как гарантию, и рассматривайте чистый результат так же.
Насколько точна сгенерированная строка-пример?
Это детерминированный, лучший вариант примера, построенный путём прохода паттерна один раз. Он надёжен для простых паттернов, но lookarounds и сложные backreferences только приблизительны.
Проверяет ли он паттерн на соответствие реальному движку regex?
Нет — он использует свой собственный парсер, так что одно объяснение работает для синтаксиса JavaScript, PCRE и Python без движка, зависящего от браузера. Подлинно неясный синтаксис может быть заявлен как недействительный даже там, где конкретный движок его принял бы.
Загружается ли мой регулярное выражение где-нибудь?
Нет. Объяснение паттерна работает полностью в вашем браузере — текст, который вы вставляете, никогда не отправляется на сервер.