Бесплатный конвертер

Тестер Регулярных Выражений

Тестируйте и отлаживайте регулярные выражения мгновенно в браузере. Выделяйте совпадения, просматривайте группы захвата, используйте режим замены — бесплатно и приватно.

//g
Флаги:

Об этом инструменте

Регулярные выражения — это предметно-ориентированный язык для сопоставления шаблонов в тексте. Они используются в компьютерных технологиях с 1968 года и теперь встроены во все современные языки программирования, текстовые редакторы и инструменты поиска в командной строке. Синтаксис краток, но подвержен ошибкам: небольшие изменения приводят к незначительному изменению поведения сопоставления, а сложные выражения быстро становятся нечитаемыми. Тестер, который показывает совпадения в режиме реального времени по мере редактирования шаблона, является наиболее эффективным способом разработки и проверки регулярных выражений.

Этот тестер запускается в вашем браузере с использованием механизма регулярных выражений JavaScript (того же, который использует ваше приложение, если оно работает в браузере). Шаблоны и тестовый текст обновляются реактивно: каждое изменение любого из них приводит к повторному запуску сопоставления. Группы совпадений выделены, захваченные группы перечислены, а флаги (регистронезависимые, многострочные, глобальные) доступны для тестирования.

Синтаксис регулярных выражений незначительно различается в зависимости от движка. JavaScript соответствует спецификации ECMAScript; Python, PCRE (используется PHP и многими другими), Java и Go имеют свои собственные диалекты с пересекающимися, но не идентичными функциями. Разработанные здесь шаблоны используют синтаксис ECMAScript; межплатформенная переносимость требует проверки документации каждой цели.

Зачем использовать тестер регулярных выражений

Ошибки регулярных выражений, как известно, трудно отладить после развертывания. Шаблон, который выглядит разумным, может соответствовать больше или меньше, чем предполагалось, давать сбой в крайних случаях или иметь катастрофический возврат при определенных входных данных. Интерактивное тестирование шаблонов на основе репрезентативных входных данных позволяет выявить проблемы еще до проверки кода и его запуска в производство.

Шаблоны также выигрывают от документации. Отображение регулярного выражения рядом с входными данными, которым оно должно соответствовать, и входными данными, которым оно не должно соответствовать, делает намерение явным. Будущие специалисты по сопровождению (включая вас через шесть месяцев) ценят документированные тестовые примеры больше, чем умные остроты.

Как использовать

Введите шаблон, введите тестовый ввод и посмотрите совпадения, выделенные в реальном времени.

  1. Введите свой шаблон: Введите шаблон регулярного выражения в поле шаблона. Работают как буквальные регулярные выражения (/pattern/flags), так и формы, состоящие только из шаблонов; флаги могут быть установлены через вход flags.
  2. Добавить тестовый ввод: Вставьте образец текста, которому должен соответствовать шаблон (а в идеале — и текст, которому он не должен соответствовать). Тестер сравнивает шаблон с входными данными и выделяет совпадения.
  3. Установить флаги: Общие флаги: g (глобальный, найти все совпадения), i (регистронезависимо), m (многострочный, ^ и $ соответствует началу/концу строки), s (точка, . соответствует символу новой строки), u (Юникод).
  4. Проверить результаты: Каждое совпадение выделяется во входных данных. Группы захвата отображаются в списке с индексом группы и значением. Тестер также показывает количество совпадений и любые ошибки компиляции в шаблоне.

Общие случаи использования

Технические детали

Регулярное выражение JavaScript соответствует спецификации ECMAScript. Основные возможности: классы символов ([abc], [^abc]), квантификаторы (*, +, ?, {n,m}), чередование (|), группировка ((...)), захватывающие и нефиксирующие группы, просмотр вперед и назад (современные движки), обратные ссылки, именованные группы, escape-последовательности свойств Unicode (с флагом u) и стандартный набор escape-последовательностей.

Важные отличия от PCRE и Python: поддержка просмотра назад появилась в JavaScript недавно (2018+); именованные группы используют синтаксис (?<имя>...); некоторые escape-символы Unicode требуют, чтобы флаг u работал правильно. Шаблоны, предназначенные для межъязыкового использования, следует сверять с документацией каждой цели.

Производительность: механизмы регулярных выражений на основе обратного отслеживания (большинство из которых включают JavaScript) могут иметь катастрофические последствия для определенных патологических шаблонов. Тесты, которые подвешивают тестер, являются признаком того, что шаблон нуждается в упрощении — обычно за счет отказа от вложенных кванторов и неоднозначного чередования.

Лучшие практики

Часто задаваемые вопросы

Какой вариант регулярного выражения поддерживает этот инструмент?
Он использует встроенный механизм RegExp JavaScript, который поддерживает стандартный синтаксис, включая просмотр вперед, просмотр назад (в современных браузерах), именованные группы захвата и экранирование свойств Unicode.
Могу ли я протестировать замену регулярных выражений?
Да. Переключитесь в режим замены, чтобы ввести шаблон замены. Вы можете использовать $1, $2 и т. д. для обратных ссылок на группы захвата и $<name> для именованных групп.
Почему мое регулярное выражение здесь соответствует другому, чем в Python/PHP?
В разных языках программирования используются немного разные механизмы регулярных выражений. JavaScript не поддерживает притяжательные квантификаторы и некоторые особенности PCRE. Основной синтаксис (классы символов, кванторы, группы) одинаков во всех языках.
Сохраняет ли инструмент мои шаблоны регулярных выражений?
Нет. Ничего не сохраняется и не передается. Инструмент работает полностью в вашем браузере. Вы можете добавить шаблоны в закладки или поделиться ими, скопировав строку регулярного выражения.
Как мне сопоставить буквальный специальный символ?
Экранируйте его обратной косой чертой. Чтобы соответствовать буквальной точке: \. Чтобы соответствовать буквальной обратной косой черте: \\. Внутри классов символов [...] большинство специальных символов теряют свое значение.
Тестер работает на сервере?
Нет. Компиляция и сопоставление шаблонов происходят в вашем браузере с использованием собственного объекта RegExp.
Могу ли я тестировать шаблоны для движков, не поддерживающих JavaScript?
По большей части. Для простых шаблонов основные механизмы согласны. Для расширенных функций (просмотр назад, атомарные группы, притяжательные квантификаторы, экранирование свойств Юникода) проверьте документацию целевого механизма.
Обрабатывает ли он очень большие входные данные?
До нескольких мегабайт работает плавно. Большие входные данные могут замедлить или зависнуть браузер, особенно в случае шаблонов, склонных к возврату.