Бесплатный онлайн-тестер и визуализатор регулярных выражений. Напишите регулярное выражение JavaScript и просмотрите его в виде интерактивной диаграммы, объясненной простым английским языком и сопоставляемой в реальном времени с группами захвата с цветовой кодировкой. Замена, извлечение, модульное тестирование и экспорт кода без регистрации.
Тестер регулярных выражений, который покажет вам, что означает ваш шаблон.
Тестируйте, отлаживайте и изучайте регулярные выражения в одном месте. Введите шаблон, и он мгновенно отобразится в виде интерактивной схемы железных дорог, будет объяснен по токенам на простом английском языке и запущен в прямом эфире с вашим текстом, при этом каждое совпадение и группа захвата будут выделены цветом. Заменяйте, извлекайте, разделяйте, пишите модульные тесты, экспортируйте рабочий код на 9 языков и получайте предупреждения о катастрофическом возврате — и все это в вашем браузере.
Большинство тестеров регулярных выражений сообщают только, соответствует ли шаблон. Это также показывает вам, почему. По мере ввода регулярное выражение анализируется и рисуется как диаграмма железной дороги: карта слева направо, где каждый путь через диаграмму представляет собой строку, которой может соответствовать шаблон. Наведите указатель мыши на любой прямоугольник, и в вашем узоре загорятся соответствующие символы, а описание на простом английском языке расскажет вам, что именно делает этот элемент. Переместите текстовый курсор по шаблону, и диаграмма последует за ним. Ниже ваш шаблон сравнивается с вашим собственным тестовым текстом, где каждое совпадение выделено, а каждая группа захвата выделена своим цветом, так что вы можете одновременно увидеть, что совпало и почему.
Функции
Интерактивная диаграмма железной дороги любого шаблона: наведите курсор на поле, чтобы оно подсветилось в регулярном выражении.
Доступное объяснение каждого токена, группы, квантификатора и обходного пути на английском языке.
Подсветка совпадений в реальном времени с помощью групп захвата с цветовой кодировкой внутри текста
Нажмите на совпадение, чтобы увидеть, что запечатлела каждая группа, прямо на диаграмме.
Редактор шаблонов цвета синтаксиса, который следует за курсором
Все флаги JavaScript: g, i, m, s, u, v (наборы Юникода) и y.
Замените на $1, $<name>, $& и выделенный фрагмент до/после предварительного просмотра.
Извлечение совпадений в список с помощью шаблонов, уникальности/сортировки, экспорта CSV и JSON.
Разделение текста по регулярному выражению и модульные тесты, которые должны (или не должны) совпадать
Экспорт кода для JavaScript, TypeScript, Python, PHP, Java, C#, Go, Rust и Ruby.
Таблица совместимости: посмотрите, какие функции не работают в Python, PCRE, Go или Rust.
Защита ReDoS: запускается в рабочем процессе, останавливает неконтролируемые шаблоны и помечает вложенные квантификаторы.
Библиотека из 40 протестированных шаблонов плюс конструктор, созданный на основе примеров.
Кликабельная шпаргалка, сохраненные шаблоны и ссылки для совместного использования, 100% в вашем браузере
Как использовать Тестер регулярных выражений и визуализатор
1
Введите шаблон
Введите регулярное выражение (вставка /pattern/flags автоматически разделит его), выберите его из библиотеки шаблонов или сгенерируйте его из примеров на вкладке «Сборка».
2
Переключить флаги
Нажмите g, i, m, s, u, v или y, чтобы изменить поведение сопоставления; наведите флаг, чтобы увидеть, что он делает.
3
Прочитайте визуальную схему
Наведите указатель мыши или щелкните любой квадрат на схеме железной дороги или переключитесь на «Объяснение», чтобы увидеть, что означает каждая часть узора.
4
Проверьте свой текст
Вставьте текст в тестовую строку; матчи и группы захвата выделяются в прямом эфире. Щелкните совпадение, чтобы увидеть значение каждой группы на диаграмме.
5
Замените, извлеките или проверьте
Используйте тесты замены, извлечения, разделения и модульных тестов, чтобы убедиться, что шаблон выполняет именно то, что вам нужно.
6
Экспортируйте или поделитесь
Скопируйте рабочий код для своего языка на вкладке «Код», загрузите диаграмму в формате SVG/PNG или скопируйте ссылку для общего доступа.
Распространенные случаи использования
Понимание сложного регулярного выражения, которое вы унаследовали, по одному блоку диаграммы за раз.
Выясните, почему регулярное выражение не соответствует вашим данным.
Подтвердите адрес электронной почты, URL-адрес, телефон или шаблон пароля перед отправкой.
Извлечение полей из строк журнала с помощью именованных групп захвата.
Создайте и просмотрите функцию поиска и замены с помощью групповых ссылок.
Перенесите регулярное выражение JavaScript на Python, PHP, Go или Java.
Научите или изучите регулярные выражения с визуальным объяснением
Подробное руководство
Как читать диаграмму железной дороги с регулярным выражением
Железнодорожные (синтаксические) диаграммы читаются как железнодорожные пути: начинаются с точки слева, следуют по любому маршруту до конца, а символы, через которые вы проходите, образуют строку, которую принимает регулярное выражение. Ветви означают альтернативы, дорожка, которая зацикливается внизу, означает повторение, а дорожка, которая обходит поле выше, означает, что часть не является обязательной. Цветные рамки — это группы захвата (те же цвета используются в выделенных вами совпадениях), пунктирные рамки — это обходные пути, которые проверяются без использования текста, а прямоугольники в форме таблеток — это привязки, которые соответствуют позиции, а не символу. Щелкните совпадение в результатах, и в каждом фрейме группы будет показано точное значение, которое оно зафиксировало, или «нет совпадения», если эта группа была пропущена.
На схеме
Синтаксис регулярных выражений
Значение
Поле с цитируемым текстом
абв\. \п
Именно эти персонажи
Список в коробке «один из:»
[a-z0-9_]
Любой персонаж из набора
В поле «Ничего из:»
[^\s@]
Любой одиночный символ НЕ в наборе
Зелёное поле (цифра, символ слова…)
\d \w \s .
Сокращение класса символов
Коробочка в форме таблеток
^ $ \b
Якорь: позиция, а не персонаж
Трек разбивается на ветки
кошка|собака
Любая альтернатива
Отслеживайте петли назад внизу
+ * {2,5}
Повторить (на этикетке указано, сколько раз)
Трек обходит выше
? * {0,3}
Часть необязательна
Пунктирная петля
+? *?
Ленивый: повторяйте как можно меньше раз.
Цветная рамка «Имя №1»
(…) (?<имя>…)
Группа захвата, пронумерована слева направо
Пунктирная рамка, за которой следует:
(?=…) (?!…) (?<=…)
Просмотр вперед / просмотр назад
Шпаргалка по Regex: синтаксис, который вы будете использовать каждый день
Откройте встроенную шпаргалку над тестером и щелкните любой токен, чтобы вставить его под курсор. Это строительные блоки почти каждого шаблона:
Токен
Матчи
Пример
\d
Цифра 0-9
\d{4} соответствует 2026 году
\w
Буква, цифра или подчеркивание
\w+ соответствует пользователю_42
\s
Пробелы (пробел, табуляция, новая строка)
a\sb соответствует 'a b'
.
Любой символ, кроме разрыва строки
a.c соответствует abc, a-c
[абв] / [^абв]
Один из/ни один из перечисленных персонажей
[aeiou] соответствует гласной
^ и $
Начало и конец строки (или строки с m)
^\d+$ — только цифры
\b
Граница слова
\bcat\b пропускает «объединить»
* + ?
0+, 1+ или 0-1 повторений
цвет соответствует цвету, цвету
{n,m}
Между n и m повторениями
\d{2,4}
(…) и (?<имя>…)
Группа захвата/именованная группа
(?<год>\d{4})
(?:…)
Группа без захвата
(?:ab)+
\1, \k<имя>
Тот же текст, что и в предыдущей группе
(\w)\1 соответствует 'll'
(?=…) (?!…)
Сопровождается/не сопровождается
\d+(?=px)
(?<=…) (?<!…)
Предшествует / не предшествует
(?<=\$)\d+
Объяснение флагов регулярных выражений
Флаги меняют поведение всего шаблона. Переключайте их одним щелчком мыши; наведите флаг, чтобы увидеть, что он делает.
Флаг
Имя
Эффект
g
глобальный
Найдите каждое совпадение вместо того, чтобы останавливаться на первом
i
игнорировать регистр
Буквы совпадают в верхнем или нижнем регистре
m
многострочный
^ и $ совпадают в начале/конце каждой строки
s
точкаВсе
. также соответствует разрывам строк
u
Юникод
Рассматривает эмодзи и астральных персонажей как один персонаж; включает \p{…}
v
наборы юникода
Все, что вы делаете, плюс операции над множествами, такие как [\p{L}--[a-z]]
y
липкий
Каждый матч должен начинаться ровно там, где закончился предыдущий.
Замена, извлечение, разделение и модульное тестирование в одном месте
Переключитесь на «Заменить», чтобы создать правило поиска и замены с токенами $1, $<name>, $& и $$; в результате выделяется каждая вставленная часть, поэтому вы можете проверить ее перед запуском на реальных данных. Extract превращает каждое совпадение в список с использованием шаблона (например, $2, $1 для замены двух групп) с уникальными параметрами и параметрами сортировки, а также экспортом CSV или JSON для электронных таблиц. Split показывает именно то, что возвращает String.split(), включая захваченные разделители. Модульные тесты позволяют вам определить поведение: добавляйте строки, которые должны совпадать, должны совпадать полностью или не должны совпадать, а счетчик пройденных/неудачных результатов обновляется при каждом нажатии клавиши, поэтому небольшое изменение в вашем шаблоне никогда незаметно не нарушит уже исправленный вами случай.
Катастрофический возврат (ReDoS) и как вас защищает этот тестер
Некоторые шаблоны, такие как (a+)+$ или (\w+\s?)*$, можно разделить между повторениями экспоненциально многими способами. Когда входные данные почти совпадают, движок пробует каждую комбинацию и может заморозить вкладку браузера или отключить сервер — уязвимость, известная как ReDoS (отказ в обслуживании с помощью регулярных выражений). Этот тестер запускает каждый шаблон в отдельном веб-воркере с двухсекундным ограничением: если движок зависает, он останавливается, и вместо зависшей страницы вы получаете четкое предупреждение. Встроенный линтер также помечает опасную форму (повторяющуюся группу, внутренняя часть которой тоже повторяется) перед отправкой, а также другие распространенные ошибки, такие как неэкранированная точка в доменном имени, диапазоны [A-z] и пустые альтернативы.
Используйте одно и то же регулярное выражение в Python, PHP, Java, C#, Go, Rust и Ruby.
Тестер запускает собственный механизм регулярных выражений JavaScript (ECMAScript) вашего браузера, поэтому результаты точны для JavaScript, TypeScript и Node.js. Вкладка «Код» превращает ваш шаблон в готовый к вставке код для восьми других языков и преобразует отличающиеся части: именованные группы становятся (?P<name>…) для Python, флаги становятся RegexOptions для C# или встроенными (?i) для Go и Rust, а токены замены переписываются для каждого языка. В таблице совместимости перечислены все функции, которые использует ваш шаблон, и указано, поддерживает ли их каждый движок:
Начните с проверенного шаблона или создайте его на основе примеров.
Библиотека шаблонов содержит 40 готовых, протестированных выражений, каждое из которых содержит образец текста: электронная почта, URL-адрес, IPv4 и IPv6, номера телефонов E.164 и США, надежные пароли, UUID, семантические версии, почтовые индексы Великобритании, даты ISO и ДД/ММ/ГГГГ, цены, хэштеги, @упоминания, ссылки Markdown, HTML-теги, строки журнала Apache/Nginx, повторяющиеся слова и многое другое. Если вы предпочитаете начать со своих данных, вставьте несколько примеров в Build: генератор группирует буквы, цифры и символы в шаблон, например ^\d{4}-\d{2}-\d{2}$, который вы можете уточнить. Build также может экранировать любой буквенный текст, поэтому такие символы, как . * ? ( ) $ совпадают точно.
Частный по дизайну
Все работает локально в движке JavaScript вашего браузера: ничего из того, что вы вводите, не загружается, не регистрируется и не сохраняется на сервере. Ваш последний сеанс сохраняется в этом браузере, поэтому вы можете продолжить с того места, где остановились, сохраненные шаблоны остаются на вашем устройстве, а ссылки для обмена содержат шаблон, текст и тесты внутри самого URL-адреса, поэтому на нашей стороне ничего не сохраняется.
Часто задаваемые вопросы
Какой вариант регулярного выражения использует этот тестер?
Он использует собственный механизм регулярных выражений JavaScript (ECMAScript) вашего браузера, тот же, который используют Chrome, Firefox, Safari и Node.js, включая флаги g, i, m, s, u, v и y. Результаты точны для JavaScript и TypeScript; вкладка «Код» преобразует шаблон для других языков.
Могу ли я протестировать группы захвата?
Да. Для каждого совпадения указывается его положение и значение каждой пронумерованной и именованной группы, группы выделяются цветом внутри текста, а при нажатии на совпадение отображается зафиксированное значение каждой группы прямо на диаграмме.
Как работает предварительный просмотр замены?
Введите замену, используя $1, $2 для нумерованных групп, $<name> для именованных групп, $& для всего совпадения и $$ для буквального знака доллара. Результат обновляется в реальном времени и подсвечивает каждую вставленную часть точно так, как это сделал бы String.replace().
Являются ли мои тестовые данные конфиденциальными?
Да. Регулярное выражение полностью выполняется в вашем браузере, в локальном веб-воркере. Ваши шаблоны и тестовые строки никогда не загружаются; сохраненные шаблоны остаются только в этом браузере.
Как проверить регулярное выражение на моем тексте?
Введите шаблон и вставьте образец текста; совпадения выделяются в реальном времени с отображением групп захвата, поэтому вы можете точно увидеть, чему соответствует ваше регулярное выражение, и мгновенно уточнить его.
Почему мое регулярное выражение ничему не соответствует?
Распространенными причинами являются отсутствующий флаг (i для случая, m so ^ и $ работают на каждой строке, s so . пересекает разрывы строк), неэкранированный специальный символ или синтаксис из другого языка. Наведите указатель мыши на диаграмму, чтобы увидеть, чего ожидает каждая часть, прочитайте объяснение на простом английском языке и проверьте предупреждения под шаблоном.
Могу ли я протестировать тот же шаблон для JavaScript и других вариантов?
Сопоставление выполняется на движке JavaScript, а вкладка «Код» генерирует рабочий код для Python, PHP, Java, C#, Go, Rust и Ruby, преобразуя именованные группы, флаги и синтаксис замены. Таблица совместимости показывает, какие функции, такие как просмотр назад или обратные ссылки, не поддерживаются в каждом механизме.
Что такое визуализатор регулярных выражений или железнодорожная диаграмма?
Визуализатор регулярных выражений рисует регулярное выражение в виде железнодорожной диаграммы: путь, по которому вы следуете слева направо, где ответвления являются альтернативами, циклы — повторениями, а обходы — необязательными частями. Благодаря этому длинные шаблоны гораздо легче читать, чем необработанный синтаксис. Здесь диаграмма интерактивна: наведите курсор на поле, чтобы выделить его в шаблоне, и увидите объяснение на простом английском языке.
Могу ли я скачать диаграмму регулярных выражений?
Да. Используйте кнопки SVG или PNG над диаграммой, чтобы загрузить ее для документации, проверки кода или учебных материалов. Элементы управления масштабированием и подгонкой по ширине помогают работать с длинными узорами.
Что такое катастрофический возврат (ReDoS)?
Это происходит, когда шаблон типа (a+)+$ может разбивать один и тот же текст между вложенными повторениями экспоненциально многими способами, поэтому неверный ввод заставляет движок работать на секунды или часы. Этот тестер запускает шаблоны в Web Worker, останавливает их через две секунды и предупреждает о вложенных квантификаторах перед их развертыванием.
Как преобразовать регулярное выражение JavaScript в Python?
Откройте вкладку «Код» и выберите «Python». Инструмент перезаписывает (?<имя>…) как (?P<имя>…), \k<имя> как (?P=имя), сопоставляет флаги i, m и s с re.IGNORECASE, re.MULTILINE и re.DOTALL и преобразует замены $1 в \g<1>. Обратите внимание, что встроенный модуль re Python не поддерживает свойства Unicode \p{…}.
Что означают флаги регулярных выражений g, i, m, s, u, v и y?
g находит все совпадения, i игнорирует регистр, m заставляет ^ и $ работать в каждой строке, s позволяет . сопоставлять разрывы строк, u включает полные свойства Unicode и \p{…}, v добавляет операции установки Unicode, а y (sticky) соответствует только той точной позиции, где закончилось последнее совпадение.
В чем разница между жадными и ленивыми квантификаторами?
Жадные квантификаторы (*, +, {n,m}) соответствуют максимально возможному количеству символов, а затем при необходимости возвращают символы; ленивые (*?, +?, {n,m}?) совпадают как можно меньше и расширяются только при необходимости. Например, <.+> соответствует всей строке тегов, а <.+?> соответствует одному тегу за раз. На схеме ленивый цикл нарисован пунктиром.
Как работают просмотр вперед и назад?
Они проверяют, что идет после (?=…) или до (?<=…) текущей позиции, не включая ее в сопоставление; отрицательные формы (?!…) и (?<!…) требуют, чтобы текста НЕТ. Например, \d+(?=px) соответствует 12 в «12px». JavaScript поддерживает просмотр назад любой длины.
Может ли этот инструмент сгенерировать для меня регулярное выражение?
Да. Вставьте несколько примеров на вкладку «Сборка», и он предложит шаблон, объединяющий буквы, цифры и символы (например, 2026-09-24 станет \d{4}-\d{2}-\d{2}). Вы также можете начать с 40 протестированных шаблонов в библиотеке, таких как электронная почта, URL-адрес, IP-адрес, номер телефона, дата и правила пароля.
Как написать модульные тесты для регулярного выражения?
Откройте вкладку Модульные тесты и добавьте строки, которые должны совпадать, полностью совпадать или не совпадать. Каждый тест повторяется при каждом нажатии клавиши с подсчетом количества пройденных/неудачных результатов, а функция «Импорт строк» превращает каждую строку вашего тестового текста в тестовый пример.
Могу ли я поделиться с кем-нибудь регулярным выражением?
Нажмите «Поделиться ссылкой», чтобы скопировать URL-адрес, который повторно открывает точный шаблон, флаги, тестовый текст, замену и модульные тесты. Все закодировано внутри самой ссылки, поэтому ничего не хранится на сервере.
Чем это отличается от regex101 или RegExr?
regex101 позволяет переключаться между несколькими движками, такими как PCRE, Python и Java, чего нет в этом инструменте. Этот тестер фокусируется на движке JavaScript, на котором фактически работает ваш код, и добавляет интерактивную диаграмму железных дорог, модульные тесты, защиту от ReDoS, экспорт кода для 9 языков и таблицу совместимости, без учетной записи и без загрузки.