tigtools

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

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

Работает в браузере Без регистрации

Флаги

Используйте $1, $2 … для нумерованных групп, $<name> для именованных групп, $& для всего совпадения и $$ для знака доллара.

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

  1. Введите регулярное выражение в поле «Шаблон», не добавляя слеши по краям.
  2. Отметьте нужные флаги. Флаг g (глобальный поиск) находит все совпадения, а не только первое.
  3. Вставьте текст для поиска. Совпадения будут подсвечены и перечислены с индексами и захватывающими группами.
  4. При желании введите замену, например $2-$1, чтобы посмотреть результат String.replace.

Как это работает

Тестер запускает ваш шаблон с помощью встроенного в браузер объекта RegExp, поэтому результаты полностью совпадают с теми, которые выдаст код JavaScript (ECMAScript) в этом браузере. В других языках используются другие разновидности регулярных выражений: PCRE (PHP), модуль re в Python, Java и .NET поддерживают возможности, которых нет в JavaScript, например притяжательные квантификаторы (a++), атомарные группы ((?>…)), встроенные модификаторы вроде (?i) и рекурсию. Кроме того, различаются такие детали, как якоря \A и \Z. Прежде чем полагаться на шаблон в другом языке, проверьте его там. Просмотр назад ((?<=…)), именованные группы ((?<name>…)) и экранирование свойств Unicode (\p{L} с флагом u) работают во всех современных браузерах.

Без флага g или y находится только первое совпадение, как при использовании RegExp.exec. Совпадения нулевой длины, например для ^ или \b, отображаются в списке, но не подсвечиваются; после такого совпадения поиск продолжается со следующего символа (следующей кодовой точки с флагом u), как при использовании String.matchAll. Захватывающие группы отображаются по номеру и, если задано, по имени. Если группа не участвовала в совпадении, указывается, что у неё нет значения; это не то же самое, что пустое совпадение.

Некоторые шаблоны, например (a+)+$ для длинной строки без совпадений, требуют экспоненциально много времени, чтобы завершиться (катастрофический возврат). Чтобы снизить риск, поиск запускается через короткое время после того, как вы перестали печатать; проверяются только первые 100 000 символов текста, а в результат добавляется не более 1 000 совпадений. Сложный шаблон всё ещё может на некоторое время сделать вкладку неотзывчивой. Если это произошло, упростите шаблон или сократите текст.

Примеры

Извлечение дат

Шаблон (\d{4})-(\d{2})-(\d{2}) с включённым флагом g находит два совпадения в тексте «Due 2026-03-15, paid 2026-04-02». Группа 1 — год; замена $3.$2.$1 преобразует текст в «Due 15.03.2026, paid 02.04.2026».

Именованные группы для понятного кода

Шаблон (?<key>\w+)=(?<value>[^&]*) для строки запроса a=1&b=two выводит key и value для каждой пары. Это соответствует значениям match.groups.key и match.groups.value в JavaScript.

Поиск без учёта регистра в нескольких строках

Шаблон ^error:.* с флагами g, i и m находит каждую строку журнала, начинающуюся с Error:, ERROR: или error:, поскольку с флагом m символ ^ соответствует началу каждой строки.

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

Будет ли моё регулярное выражение работать так же в Python, PHP или Java?

Не обязательно. Этот инструмент использует движок JavaScript. Базовый синтаксис общий, но такие возможности, как притяжательные квантификаторы, атомарные группы, встроенные флаги вроде (?i) и некоторые последовательности экранирования, есть только в других разновидностях регулярных выражений; некоторые конструкции также работают по-разному. Всегда проверяйте шаблон в целевом языке.

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

Флаг g (глобальный поиск) выключен. Без него JavaScript возвращает только первое совпадение. Включите g, чтобы найти их все.

Нужно ли вводить слеши вокруг шаблона?

Нет. Введите только шаблон, например \d+, а не /\d+/g, и выберите флаги с помощью флажков. Ниже результатов показан литерал JavaScript, который можно скопировать в код.

Почему страница начала тормозить с моим шаблоном?

Вложенные квантификаторы, например (a+)+ или (.*)*, могут заставить движок проверить экспоненциальное число вариантов, если совпадения нет. Уточните шаблон, например замените .* на [^,]*, или используйте якоря. Чтобы снизить нагрузку, тестер ограничивает текст 100 000 символами.

Конфиденциальность

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