Проверить регулярное выражение (regex) с подсветкой совпадений

Проверить регулярное выражение онлайн: подсветка совпадений в тексте, группы захвата, готовые шаблоны, замена с $1, разбор ошибок по-русски. Данные не покидают браузер.

Регулярное выражение

Шаблон без обрамляющих косых черт: только выражение, без /…/

Флаги
g — все совпаденияИскать по всему тексту, а не остановиться на первом. Без него замена меняет только первое вхождение
i — без учёта регистра«Кот», «кот» и «КОТ» считаются одним и тем же
m — многострочный режим^ и $ совпадают с началом и концом каждой строки, а не всего текста
s — точка находит переносТочка совпадает и с символом переноса строки
u — режим UnicodeВключает \p{…}, суррогатные пары и строгие правила экранирования
y — «липкий» поискСовпадение ищется только в текущей позиции, без пропуска символов

Текст проверяется целиком: . не переходит через перенос, а ^ и $ работают только с флагом m.

Текст для проверки

Совпадения

Введите шаблон — совпадения подсветятся в тексте, а здесь появится их список. Ничего нажимать не нужно.

Замена

$1–$99 — группы по номеру, $<имя> — именованная, $& — совпадение целиком, $` и $' — текст до и после него, $$ — знак доллара

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

Обычный текст превращается в шаблон, в котором все служебные символы уже экранированы: точку, звёздочку и скобки движок прочитает как сами символы, а не как команды.

Библиотека шаблонов

Готовые выражения с пояснением. Кнопка «Вставить» подставляет шаблон и его флаги в поле выше — текст остаётся на месте.

  • Email /gi
    [\w.%+-]+@[\w-]+(?:\.[\w-]+)+

    Адрес почты: имя, собака, домен. Домен с точками вроде mail.co.uk тоже подходит

    Срабатывает на: ivan.petrov@example.ru

  • URL /gi
    https?://[^\s<>"']+

    Ссылка с протоколом http или https — до первого пробела, кавычки или угловой скобки

    Срабатывает на: https://normtool.ru/tools/text/sort-lines

  • Телефон РФ /g
    (?:\+7|8)[\s(-]*\d{3}[\s)-]*\d{3}[\s-]*\d{2}[\s-]*\d{2}

    Российский номер с +7 или 8, со скобками, пробелами и дефисами в любом порядке

    Срабатывает на: +7 (912) 345-67-89

  • IPv4-адрес /g
    \b(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\b

    Четыре числа от 0 до 255 через точку: 256.1.1.1 такая проверка уже не пропустит

    Срабатывает на: 192.168.0.15

  • Дата /g
    \b(\d{1,2})[./-](\d{2})[./-](\d{4})\b

    Дата с точками, слэшами или дефисами. День, месяц и год разложены по группам захвата

    Срабатывает на: 05.03.2026

  • Время /g
    \b(?:[01]?\d|2[0-3]):[0-5]\d(?::[0-5]\d)?\b

    Время в 24-часовом виде: 9:30, 18:45, 23:59:59

    Срабатывает на: 18:45

  • Числа /g
    -?\d+(?:[.,]\d+)?

    Целые и дробные числа, в том числе отрицательные. Дробная часть — с точкой или запятой

    Срабатывает на: Итого: -12,5 кг

  • ИНН /g
    \b(?:\d{10}|\d{12})\b

    10 цифр у организации, 12 у человека. Проверка по длине, без контрольной суммы

    Срабатывает на: ИНН 7707083893

  • СНИЛС /g
    \b\d{3}-\d{3}-\d{3}\s\d{2}\b

    Номер в формате 000-000-000 00

    Срабатывает на: 112-233-445 95

  • Хештег /gu
    #[\p{L}\p{N}_]+

    Слово после решётки: русские буквы, латиница, цифры и подчёркивание

    Срабатывает на: ищите #нормтул в закладках

  • Дублирующееся слово /giu
    (?<![\p{L}\p{N}])([\p{L}]+)\s+\1(?![\p{L}\p{N}])

    Слово, написанное дважды подряд. Обратная ссылка \1 повторяет первую группу, поэтому «слово слово» находится. Границы слова заданы просмотром назад и вперёд: \b знает только латиницу и на русских словах не срабатывает

    Срабатывает на: это слово слово написано дважды

  • HTML-тег /gi
    <([a-z][a-z0-9]*)\b[^>]*>

    Открывающий или закрывающий тег с атрибутами. Имя тега попадает в первую группу

    Срабатывает на: <div class="card">

  • Двойные пробелы /g
    [^\S\r\n]{2,}

    Два и больше пробелов или табов подряд внутри строки. Переносы строк не трогает

    Срабатывает на: здесь два пробела

  • Сложный пароль /gm
    ^(?=.*[A-Za-z])(?=.*\d)(?=.*[^\w\s]).{8,}$

    Строка от 8 символов, где есть буква, цифра и знак. Проверка целиком, а не поиск подстроки

    Срабатывает на: Str0ng!pass

Зачем проверять регулярное выражение

Регулярное выражение — это язык описания строк, и главная сложность в нём не написать выражение, а понять, почему оно находит не то. Классический случай: шаблон выглядит верным, но возвращает пустоту — в одном месте стоит жадный квантификатор, в другом незамеченный символ, а группа захвата нумеруется не так, как ожидалось. Проверять это в консоли долго: непонятно, что именно нашлось и на какой позиции.

Инструмент показывает работу выражения в четырёх разрезах сразу. Совпадения подсвечиваются прямо в тексте, чтобы видеть их в контексте, а не в отрыве. Список совпадений даёт точные позиции и номер строки — по ним потом правится код. Таблица групп захвата показывает, что попало в каждую группу, включая именованные. Режим замены собирает результат со ссылками $1 и $& и сразу показывает, что получится. Ошибка синтаксиса объясняется по-русски и с позицией, а не английским сообщением движка.

Отдельная забота — тяжёлые шаблоны. Выражение вида (a+)+ на длинной строке из одинаковых символов заставляет движок перебирать экспоненциальное число способов разбора и подвешивает вкладку. Прервать одну операцию поиска в JavaScript нельзя, поэтому инструмент заранее разбирает шаблон, помечает опасные сочетания вложенных квантификаторов и не запускает их на длинном тексте, а честно пишет об этом. Ничего не отправляется на сервер: всё считается в браузере.

Частые вопросы

Как проверить регулярное выражение онлайн?

Введите шаблон в поле «Регулярное выражение» — без обрамляющих косых черт, только само выражение. Затем вставьте текст в поле «Текст для проверки». Совпадения подсветятся прямо в тексте, а ниже появится их список с номерами строк, позициями и таблицей групп захвата. Кнопку «Проверить» нажимать не нужно: всё пересчитывается на каждое изменение.

Чем это отличается от «Найти и заменить» и «Извлечь данные из текста»?

Здесь выражение отлаживают: видно, что именно нашлось, где, какие группы захвата получились и почему шаблон не срабатывает. В «Найти и заменить» готовое выражение применяют к тексту, а в «Извлечь данные из текста» тем же выражением достают список значений. Если нужно понять, как работает шаблон, его проверяют здесь, а потом переносят в тот инструмент, который решает задачу.

Что означают флаги g, i, m, s, u, y?

g — искать все совпадения, а не только первое. i — не учитывать регистр. m — считать ^ и $ началом и концом каждой строки, а не всего текста. s — разрешить точке совпадать с переносом строки. u — включить режим Unicode: тогда работают \p{...} и корректно считаются символы за пределами основной таблицы. y — «липкий» поиск: совпадение ищется строго с текущей позиции, без пропуска неподходящих символов.

Как вставить найденное значение в замену?

В поле «Чем заменить» пишутся ссылки на группы: $1, $2 — по номеру, $<имя> — по имени именованной группы, $& — совпадение целиком, $` и $' — текст до и после него, $$ — знак доллара. Результат замены показывается тут же, с подсветкой вставленных фрагментов, а кнопки «Копировать» и «В исходник» забирают его наружу или подставляют обратно в текст. Без флага g меняется только первое совпадение — инструмент пишет, сколько замен осталось нетронутыми.

Почему \b не работает на русском тексте?

В JavaScript граница слова \b определяется символами латиницы, цифр и подчёркивания. Русские буквы в этот набор не входят, поэтому \b рядом с ними не срабатывает вовсе. Вместо него используют просмотр назад и вперёд: (?<![\p{L}\p{N}]) и (?![\p{L}\p{N}]) — так граница задаётся для любого алфавита. В библиотеке шаблонов есть готовый пример «Дублирующееся слово», собранный именно так.

Что будет, если выражение вызовет зависание?

Инструмент разбирает шаблон до запуска и отмечает опасные сочетания квантификаторов — например, (a+)+ или (\w+\s?)*. Если такой шаблон найден, поиск идёт только по первым 18 символам текста, а над результатом появляется предупреждение с указанием проблемного куска. Длинный текст при этом не просматривается: перебор вариантов разбора растёт экспоненциально, и на сотне символов вкладка перестала бы отвечать. Дополнительно поиск останавливается после 5000 совпадений или 400 миллисекунд работы.

Текст отправляется на сервер?

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