UltKit
Изображения11
PDF13
Документы и данные7
Видео6
Аудио4
Другие инструменты22

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

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

Флаги

Символов: 0 · слов: 0 · строк: 0

Здесь будут подсвечены совпадения.

Символов: 0 · слов: 0 · строк: 0

Всё работает в этой вкладке браузера. Ваш текст никуда не загружается и не сохраняется.

Токены регулярных выражений JavaScript

Столбец первого совпадения получен запуском каждого шаблона на его тексте движком JavaScript, который собирал эту страницу.

ТокенЗначениеШаблонТекстПервое совпадение
\dЦифра 0–9/\d+/Order 66 shipped66
\wБуква, цифра или подчёркивание (ASCII)/\w+/snake_case-idsnake_case
\sПробельный символ, включая табуляцию и переносы строк/\s+/two spaces
.Любой символ, кроме переноса строки (если нет s)/a.c/abc a-cabc
^ $Начало и конец ввода (или строки, с флагом m)/^\w+$/singlesingle
[abc]Один из перечисленных символов/[aeiou]/rhythm and bluesa
[^abc]Любой символ, кроме перечисленных/[^0-9]+/2026-10-18-
* + ?0 или больше, 1 или больше, 0 или 1/colou?r/color colourcolor
{n,m}От n до m раз/\d{2,4}/7 42 1999 12345642
(…)Захватывающая группа/(\d+)px/width: 320px320px
(?<name>…)Именованная захватывающая группа/(?<h>\d\d):(?<m>\d\d)/at 09:4509:45
(?:…)Группа без захвата/(?:ab)+/ababab!ababab
a|bОдна из сторон/cat|dog/hotdogdog
\bГраница слова/\bcat\b/concat catcat
(?=…)За которым следует (опережающая проверка)/\d+(?=%)/50 of 75%75
(?<!…)Перед которым нет (негативная ретроспективная проверка)/(?<!\$)\b\d+/$30 or 4040
\p{L}Любая буква Unicode (нужен u)/\p{L}+/unaïve 東京naïve

Шесть флагов и что они меняют

g (global) находит все совпадения, а не останавливается на первом; без него в списке будет одна запись. i игнорирует регистр. m (multiline) заставляет ^ и $ срабатывать в начале и конце каждой строки, а не только всего текста, что нужно для шаблона вроде пробелов в конце строки. s (dotAll, добавлен в ES2018) позволяет . совпадать и с переводами строк. u (unicode) обрабатывает текст как кодовые точки, поэтому эмодзи считается одним символом, и включает свойства вроде \p{L} для любой буквы в любом письме. y (sticky) совпадает строго в текущей позиции, этот режим используют токенизаторы. В JavaScript есть также d для индексов совпадений и v для операций над множествами в классах; этот тестер ограничивается шестью флагами выше.

Под тестовым текстом для каждого совпадения показаны его индекс и группы. Нумерованные группы создаются обычными скобками, (?:…) группирует без захвата, а (?<year>\d{4}) создаёт именованную группу, которая отображается по имени, как показывает пример с датой ISO. Меню Common patterns вставляет проверенные заготовки для адресов электронной почты, URL, адресов IPv4, hex-цветов, UUID, повторяющихся слов и пробелов в конце строки. Шаблон для email стоит считать быстрой проверкой, а не валидацией: полная грамматика адреса намного шире, и настоящая проверка — отправка письма.

Ретроспективная проверка и катастрофический возврат

Lookaround проверяют, что находится вокруг позиции, не захватывая это. Lookahead, (?=…) и (?!…), есть в JavaScript всегда; lookbehind, (?<=…) и (?<!…), появился в ES2018 и стал доступен во всех основных браузерах, когда Safari 16.4 добавил его в 2023 году. Так, (?<=\$)\d+ находит 42 в «$42», не включая знак доллара. В отличие от многих других движков, JavaScript допускает lookbehind любой длины.

Движок JavaScript использует перебор с возвратами: когда путь не удаётся, он возвращается и пробует альтернативы. Вложенные квантификаторы вроде (a+)+$ дают экспоненциальное число способов разбить один и тот же текст, поэтому строка из 30 букв a с последующей x может обрабатываться секундами, а ещё несколько букв — часами. Это катастрофический возврат, а на серверах — ReDoS, отказ в обслуживании; одно правило WAF с таким дефектом 2 июля 2019 года остановило сеть Cloudflare примерно на полчаса. Поскольку этот тестер работает в вашей вкладке, такой шаблон может зависнуть страницу; перезагрузите её и перепишите шаблон так, чтобы два квантификатора не могли занимать одни и те же символы: используйте более точные классы вроде [^,]* вместо .* или якоря. Для правки самого текста, а не поиска по нему, см. инструменты для текста; другие утилиты для разработчиков собраны в разделе инструменты для разработчиков.

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

Почему регулярное выражение находит только одно совпадение?
Флаг g выключен. Без него движок останавливается после первого совпадения. Включите g, чтобы увидеть все вхождения; один флаг y тоже находит несколько совпадений, но только если они идут подряд.
Совпадает ли \d в JavaScript с цифрами других письменностей?
Нет. В JavaScript \d означает только 0–9, а \w — только латинские буквы ASCII, цифры и подчёркивание, даже с флагом u. Для других письменностей используйте \p{Nd} или \p{L} вместе с u.
Будет ли проверенный здесь шаблон работать так же в Python или PHP?
Базовый синтаксис переносится, но детали отличаются: именованные группы в Python записываются как (?P<name>…), PHP и Python поддерживают притяжательные квантификаторы, которых нет в JavaScript, а правила lookbehind различаются. Проверьте шаблон заново в нужном движке.
Как найти обычную точку или скобку?
Экранируйте его обратной косой чертой: \. совпадает с точкой, а \[ — с открывающей квадратной скобкой. Внутри символьного класса большинство символов и так буквальные, поэтому [.] тоже совпадает только с точкой.
Почему страница зависла, пока я вводил шаблон?
Вероятно, шаблон вызвал катастрофический возврат на вашем тексте. Перезагрузите страницу, затем избегайте вложенных квантификаторов вроде (.*)* или (a+)+ и делайте так, чтобы каждая часть совпадала с минимумом символов.