Regex Tester
Test regular expressions
Test regular expressions Запускается локально в вашем браузере
About the
Тестер регулярных выражений запускает регулярное выражение JavaScript для вашего собственного образца текста и выделяет каждое совпадение по мере ввода, поэтому вы можете наблюдать за успехом или неудачей шаблона, а не гадать. Наряду с основными моментами в нем перечислено каждое совпадение с его начальной позицией и группами захвата, которые фактически сообщают вам, является ли группа 2 нужным значением или пустой строкой. Три ошибки вызывают большинство неправильных регулярных выражений, и все три видны здесь: жадный квантификатор, незаметно поглощающий больше текста, чем предполагалось, неэкранированная точка, совпадающая с чем угодно, и отсутствующий глобальный флаг, который останавливает поиск после первого попадания.
Where people use the
- Отладка шаблона анализа журнала по нескольким реальным строкам журнала.
- Разработайте правило для телефона или почтового индекса, прежде чем включать его в форму.
- Извлечение номеров или идентификаторов заказов из вставленного блока текста.
- Изучаем, как ведут себя квантификаторы, меняя один символ и наблюдая за перемещением бликов.
How to use the
- 1
Вставьте текст, который вы хотите протестировать
Используйте реальный образец, а не придуманный. Краевые случаи в ваших фактических данных нарушают шаблон, поэтому включите строку, которая тоже не должна совпадать.
- 2
Напишите шаблон
Введите выражение без косой черты, например [a-z]+, а не /[a-z]+/. Флаги — это отдельные переключатели.
- 3
Включить или выключить флаги
g находит каждое совпадение вместо того, чтобы останавливаться на первом, i игнорирует регистр, m заставляет привязки работать для каждой строки, s позволяет точке переходить на новую строку, u включает полный режим Unicode, а y привязывает совпадения к LastIndex.
- 4
Читать таблицу соответствия
В каждом результате отображается совпавший текст, его смещение символов и каждая группа захвата. Неожиданная пустая группа обычно означает, что необязательный квантификатор ничему не соответствует.
- 5
Копируем готовый узор
Когда выделение будет выглядеть правильно, скопируйте выражение и вставьте его в свой код, не забывая также переносить флаги.
Советы и лучшие практики
- Протестируйте одно правило для каждого шаблона. Регулярное выражение, выполняющее три задания, нечитабельно и его невозможно отладить.
- Добавьте строку, которая не должна совпадать, и убедитесь, что она остается невыделенной.
- Предпочитайте именованные группы, такие как год, месяц, день, а не пронумерованные, чтобы шаблон по-прежнему что-то значил, когда вы вернетесь к нему в следующем месяце.
Часто задаваемые вопросы
Какой вариант регулярного выражения используется?
JavaScript, через собственный движок RegExp браузера. Синтаксис близок к модулю re PCRE и Python, но не идентичен. Именованные группы, просмотр вперед, просмотр назад и экранирование свойств Юникода — все это работает в современных браузерах.
Почему мой шаблон соответствует гораздо большему количеству текста, чем я ожидал?
Потому что квантификаторы по умолчанию жадные. Что-то вроде .* или [0-9]+ будет потреблять столько, сколько возможно, сохраняя при этом соответствие остальной части шаблона. Добавьте вопросительный знак, чтобы сделать его ленивым, так что .*? или [0-9]+? останавливается при первой же возможности.
Почему я получаю только один результат?
Глобальный флаг выключен. Без g движок возвращает первое совпадение и останавливается. Переключите g, чтобы собрать все совпадения во входных данных.
Почему мой якорь не работает на второй линии?
По умолчанию привязки курсора и доллара относятся к началу и концу всей строки, а не к каждой строке. Включите флаг m, чтобы они учитывали линии.
Отправляются ли куда-нибудь мои тестовые данные?
Нет. Сопоставление происходит в вашем браузере с помощью встроенного объекта RegExp. Ничего не загружается, поэтому можно смело вставлять реальные строки лога или фрагменты конфигурации.
Могу ли я использовать это для проверки ввода в форме?
Вы можете разработать шаблон здесь, но всегда проверять его снова на сервере. Регулярное выражение на стороне клиента — это удобство для пользователя, а не средство контроля безопасности, поскольку его можно полностью пропустить.