Этот тест выполняет регулярные выражения JavaScript по вашему тексту и показывает каждое совпадение, его позицию и группы захвата. Проверка идёт в браузере: ничего не загружается на сервер и не записывается в журнал.
Данные обрабатываются локально в вашем браузере и не передаются на наш сервер.
Некорректный шаблон:
Совпадения (2)
Contact ada@example.com or grace@example.org for details.
В этом тексте совпадений нет.
#1ada@example.comпозиция 8
#2grace@example.orgпозиция 27
Как пользоваться инструментом
1 Введите регулярное выражение и отметьте нужные флаги.
2 Вставьте текст для поиска: совпадения подсвечиваются и появляются в списке по мере ввода.
3 Выберите один из готовых примеров, чтобы начать с рабочего шаблона.
4 Скопируйте найденные значения или очистите поля.
Формула и логика расчёта
Поиск совпадений
new RegExp(pattern, flags).exec(text)
Шаблон компилирует JavaScript-движок браузера. Без флага g возвращается только первое совпадение; с флагом g тест продолжает поиск до конца текста.
Флаги
g global · i ignore case · m multiline · s dotAll · u unicode · y sticky
Флаги меняют то, как движок интерпретирует шаблон. Тест передаёт их конструктору RegExp и показывает синтаксические ошибки с сообщением движка.
Пример расчёта
Поиск адресов электронной почты
В письме в поддержку есть два адреса электронной почты.
Шаблон: \b[\w.+-]+@[\w-]+\.[\w.]+\b
Флаг: g
Результат: ada@example.com и grace@example.org
Каждое совпадение выводится с индексом начала; группы захвата показываются, если в шаблоне есть скобки.
Разбор даты на группы
Извлечь год, месяц и день из дат в формате ISO.
Шаблон: (\d{4})-(\d{2})-(\d{2})
Флаг: g
Группы: год, месяц и день для каждого совпадения
Части в скобках возвращаются как группы захвата в том порядке, в котором они стоят в шаблоне.
Граничные случаи и точность
Катастрофический бэктрекинг
Вложенные квантификаторы вроде (a+)+ заставляют движок перебирать варианты экспоненциально долго на некоторых входных данных. Если страница зависает, упростите шаблон: тест не может прервать уже запущенное выражение.
Совпадения нулевой длины
Шаблоны вроде ^ или \b могут совпасть с пустой строкой. После пустого совпадения тест сдвигает позицию поиска, чтобы не зациклиться.
Только синтаксис JavaScript
Тест использует синтаксис RegExp из JavaScript, а не PCRE или Python. Lookbehind и именованные группы работают только в движках, которые их поддерживают.
Частые вопросы
Почему находится только одно совпадение?+−
Чтобы найти все совпадения, нужен флаг g (global). Без него тест останавливается после первого результата.
Что такое группы захвата?+−
Каждая часть шаблона в скобках захватывает текст. Группы нумеруются слева направо и показываются рядом с совпадением; несовпавшая необязательная группа обозначается ∅.
Загружаются ли шаблон и текст?+−
Нет. Поиск выполняется в браузере встроенным движком RegExp, на сервер ничего не отправляется.
Почему выражение работает медленно?+−
Вложенные квантификаторы и неоднозначные альтернативы вызывают катастрофический бэктрекинг. Сделайте шаблон конкретнее или добавьте якоря, чтобы сократить перебор.
Поддерживаются ли именованные группы?+−
Движок принимает современный синтаксис JavaScript, поэтому именованные группы работают там, где браузер их поддерживает. В списке результатов группы показаны по номерам.
Похожие инструменты для разработчиков
Отформатировать, закодировать или хешировать текст, который вы ищете.