Перейти к содержимому
1123.net
RU
1123.net

Поиск инструментов

Фильтр по каталогу инструментов. Всё работает в вашем браузере.

Начните вводить, чтобы отфильтровать список. Enter открывает первый результат.

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

Этот тест выполняет регулярные выражения JavaScript по вашему тексту и показывает каждое совпадение, его позицию и группы захвата. Проверка идёт в браузере: ничего не загружается на сервер и не записывается в журнал.

Данные обрабатываются локально в вашем браузере и не передаются на наш сервер.

Флаги
Совпадения (2)
Contact ada@example.com or grace@example.org for details.
  1. #1 ada@example.com позиция 8
  2. #2 grace@example.org позиция 27

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

  1. 1 Введите регулярное выражение и отметьте нужные флаги.
  2. 2 Вставьте текст для поиска: совпадения подсвечиваются и появляются в списке по мере ввода.
  3. 3 Выберите один из готовых примеров, чтобы начать с рабочего шаблона.
  4. 4 Скопируйте найденные значения или очистите поля.

Формула и логика расчёта

Поиск совпадений

new RegExp(pattern, flags).exec(text)

Шаблон компилирует JavaScript-движок браузера. Без флага g возвращается только первое совпадение; с флагом g тест продолжает поиск до конца текста.

Флаги

g global · i ignore case · m multiline · s dotAll · u unicode · y sticky

Флаги меняют то, как движок интерпретирует шаблон. Тест передаёт их конструктору RegExp и показывает синтаксические ошибки с сообщением движка.

Пример расчёта

Поиск адресов электронной почты

В письме в поддержку есть два адреса электронной почты.

  1. Шаблон: \b[\w.+-]+@[\w-]+\.[\w.]+\b
  2. Флаг: g
  3. Результат: ada@example.com и grace@example.org

Каждое совпадение выводится с индексом начала; группы захвата показываются, если в шаблоне есть скобки.

Разбор даты на группы

Извлечь год, месяц и день из дат в формате ISO.

  1. Шаблон: (\d{4})-(\d{2})-(\d{2})
  2. Флаг: g
  3. Группы: год, месяц и день для каждого совпадения

Части в скобках возвращаются как группы захвата в том порядке, в котором они стоят в шаблоне.

Граничные случаи и точность

Катастрофический бэктрекинг

Вложенные квантификаторы вроде (a+)+ заставляют движок перебирать варианты экспоненциально долго на некоторых входных данных. Если страница зависает, упростите шаблон: тест не может прервать уже запущенное выражение.

Совпадения нулевой длины

Шаблоны вроде ^ или \b могут совпасть с пустой строкой. После пустого совпадения тест сдвигает позицию поиска, чтобы не зациклиться.

Только синтаксис JavaScript

Тест использует синтаксис RegExp из JavaScript, а не PCRE или Python. Lookbehind и именованные группы работают только в движках, которые их поддерживают.

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

Почему находится только одно совпадение? +

Чтобы найти все совпадения, нужен флаг g (global). Без него тест останавливается после первого результата.

Что такое группы захвата? +

Каждая часть шаблона в скобках захватывает текст. Группы нумеруются слева направо и показываются рядом с совпадением; несовпавшая необязательная группа обозначается ∅.

Загружаются ли шаблон и текст? +

Нет. Поиск выполняется в браузере встроенным движком RegExp, на сервер ничего не отправляется.

Почему выражение работает медленно? +

Вложенные квантификаторы и неоднозначные альтернативы вызывают катастрофический бэктрекинг. Сделайте шаблон конкретнее или добавьте якоря, чтобы сократить перебор.

Поддерживаются ли именованные группы? +

Движок принимает современный синтаксис JavaScript, поэтому именованные группы работают там, где браузер их поддерживает. В списке результатов группы показаны по номерам.