§

Шаблон

Флаги
§

Тестовая строка

§

Совпадения

0 совпадений

    Пока нет совпадений — введите шаблон и тестовую строку выше.

    §

    Режим замены

    Быстрая справка

    Классы символов

    \d
    Любая цифра, эквивалент [0-9].
    \w
    Любой символ слова — буквы, цифры или подчёркивание.
    \s
    Любой пробельный символ — пробел, табуляция, перевод строки и т. д.

    Якоря

    \b
    Утверждение нулевой ширины на границе слова.
    ^
    Начало ввода (или каждой строки, когда установлен флаг m).
    $
    Конец ввода (или каждой строки, когда установлен флаг m).

    Квантификаторы

    *
    Ноль или более предыдущего токена, жадно.
    +
    Один или более предыдущего токена, жадно.
    ?
    Ноль или один предыдущего токена — также делает предшествующий квантификатор ленивым.
    {n,m}
    От n до m повторений предыдущего токена.

    Группы

    (...)
    Группа захвата — доступна как $1, $2, … в заменах.
    (?:...)
    Незахватывающая группа — группирует без занятия слота.
    (?...)
    Именованная группа захвата — доступна как $ в заменах.

    Lookaround

    (?=...)
    Положительный lookahead — совпадает только если за ним следует …
    (?!...)
    Отрицательный lookahead — совпадает только если за ним НЕ следует …
    (?<=...)
    Положительный lookbehind — совпадает только если ему предшествует …
    (?
    Отрицательный lookbehind — совпадает только если ему НЕ предшествует …

    Экранирование

    \\
    Литеральный обратный слеш.
    \.
    Литеральная точка — экранируйте любой метасимвол, чтобы сопоставить его буквально.

    Regex — повседневный инструмент российского разработчика. Валидация ИНН по 10 или 12 цифрам, КПП, ОГРН, СНИЛС в формате XXX-XXX-XXX YY, номера телефона +7 (XXX) XXX-XX-XX, ИБАНа российского банка по БИК — всё это пишется регулярными выражениями в формах на 1С-Битриксе, в React-приложениях Тинькофф, в Vue-фронтенде Wildberries. Парсинг логов Angie и NGINX с кириллическими URL, разбор записей ЭДО-обмена ФНС России на корректность формата УПД, фильтрация webhook от СБП Банка России по схеме сообщений — типичные сценарии. Группы захвата помогают вытащить номер заказа из callback ЮKassa или claim sub из строки JWT ЕСИА. Конфиденциальные паттерны и тестовые данные с ПДн остаются в браузере, что закрывает требования 152-ФЗ.

    Как работает regex в вашем браузере?

    Каждая среда выполнения JavaScript содержит встроенный движок регулярных выражений — new RegExp(pattern, flags) компилирует ваш шаблон, а такие методы, как String.prototype.match, String.prototype.replace и RegExp.prototype.exec, запускают его на любой входной строке. Этот тестер оборачивает данный движок в интерфейс, чтобы вы могли редактировать, запускать и инспектировать шаблоны, не покидая браузер. Ничто из того, что вы вводите — шаблон, флаги, тестовая строка или замена — не отправляется по сети.

    Как работает тестер regex?

    Конвейер состоит из нескольких коротких шагов, и все они выполняются на стороне клиента при каждом нажатии клавиши (с debounce 150 мс, чтобы ввод оставался плавным):

    1. Тело вашего шаблона считывается из поля выше (без ведущих или завершающих разделителей / — они декоративные). Выбранные кнопки флагов объединяются в строку флагов, например gi или gimsuy.
    2. new RegExp(patternBody, flags) компилирует шаблон. Если движок выбрасывает SyntaxError (например, непарная скобка или некорректное экранирование), сообщение отображается над тестовой строкой, а список совпадений очищается. Ошибка компиляции — это реальный err.message из V8 / SpiderMonkey / JavaScriptCore, поэтому он совпадает с тем, что вы увидите в DevTools.
    3. Для списка совпадений тестер всегда перебирает с синтетическим глобальным флагом — поэтому даже если вы выключите g, список по-прежнему показывает каждое совпадение. Стандартная защита от совпадений нулевой ширины (if (m.index === rx.lastIndex) rx.lastIndex++) не даёт циклу зациклиться на шаблонах, которые совпадают с пустой строкой. Режим замены учитывает ваш реальный набор флагов, поэтому $& ведёт себя так же, как String.prototype.replace.
    4. Между каждой итерацией тестер проверяет performance.now() - start и прерывается, когда прошло 50 мс. Это защищает от катастрофического возврата на входах вроде (a+)+$ против длинного ряда a — иначе вкладка зависнет. Защита работает по принципу best-effort: патологический шаблон с одиночным совпадением всё равно может занимать время внутри одного вызова exec. Если это произойдёт, обновите вкладку и перепишите шаблон с нежадным квантификатором или с атомарным посессивным стилем (например, [^x]*x).
    5. Тестовая строка разбивается на сегменты по диапазону каждого совпадения, и совпадающие сегменты оборачиваются в элементы <mark class="rx-match rx-cap-N">, где N циклически проходит шесть цветов палитры, чтобы соседние совпадения было легко различить с первого взгляда. Нумерованные группы (m[1], m[2], …) и именованные группы (m.groups) каждого совпадения отображаются как помеченные строки ниже; если установлен флаг d, также показываются индексы [start, end] для каждой группы.

    Зачем использовать этот тестер regex?

    • Конфиденциальность: каждый шаблон, тестовая строка и замена выполняются в вашем браузере с использованием встроенного движка JavaScript RegExp. Ничего не покидает вкладку — это важно, когда вводом является клиентский лог, утечённый шаблон учётных данных или что-либо ещё, что вы не вставили бы в размещённую SaaS-песочницу regex.
    • Честный диалект: тестер показывает именно тот regex-движок, который используют Node.js, Chrome, Safari, Firefox и любой валидатор форм в браузере. Нет слоя перевода в диалект Perl, скрывающего тонкие различия — то, что работает здесь, работает в вашем коде.
    • Отладка захвата и именованных групп: каждая нумерованная группа ($1, $2, …) и именованная группа ($<year>) отображается для каждого совпадения, так что вы можете построить парсер и читать слоты, не гадая. Режим замены позволяет свободно смешивать группы — $2-$1 меняет местами первые два слота, $<name> вставляет именованный слот, а $& возвращает всё совпадение.
    • Защита от катастрофического возврата: лимит 50 мс на перебор прерывает патологические шаблоны вроде (a+)+$ до того, как они заморозят вкладку. Вы видите пояснительную ошибку вместо зависшего браузера, а страница немедленно восстанавливается.

    Каковы типичные применения тестера regex?

    Регулярные выражения встречаются в веб-разработке, безопасности и работе с данными — этот тестер нацелен на наиболее распространённые сценарии:

    • Валидация форм: создайте прототип шаблона email, телефона или почтового индекса, вставьте примеры в тестовую строку и убедитесь, что каждый положительный случай совпадает, а каждый отрицательный — нет, прежде чем отправлять шаблон в продакшен-код.
    • Парсинг логов: вставьте фрагмент вывода NGINX, приложения или аудит-лога, напишите шаблон с именованными группами для интересующих частей ((?<ip>…) (?<path>…)) и читайте захваченные слоты по каждому совпадению, чтобы подтвердить корректность парсера.
    • Поиск и замена для рефакторинга: используйте режим замены, чтобы переписать идентификаторы во фрагменте — (\w+)\.set(\w+)\($1.$2 = превращает вызовы сеттеров в присваивания свойств, а живой превью показывает результат до того, как вы зафиксируете его в codemod.

    Как выглядит пример regex?

    Возьмите шаблон (\d{4})-(\d{2})-(\d{2}) с флагом g, запущенный по тестовой строке release 2025-11-15, prerelease 2026-05-25. Движок находит два совпадения. Первое — 2025-11-15 с группой 1 = 2025, группой 2 = 11, группой 3 = 15. Второе — 2026-05-25 с такой же формой групп. В режиме замены шаблон замены $3/$2/$1 переписывает обе даты как 15/11/2025 и 25/05/2026 — конвертация ISO в DMY одним шаблоном, которую вы можете визуально проверить перед тем, как подключить шаблон к скрипту.

    Используйте этот тестер как быстрый путь для любой работы с regex — построения, отладки или переписывания шаблонов. Всё выполняется локально; ничего не журналируется; regex-движок — это тот, что поставляется с вашим браузером, поэтому поведение совпадает с тем, что увидит продакшен-код во время выполнения.