Тестер регулярных выражений (совпадения в реальном времени, группы
Введите регулярное выражение и тестовый текст — совпадения подсвечиваются по мере набора. Переключайте флаги (g/i/m/s/u), изучайте группы захвата и просматривайте результат замены.
Как это работает
Что делают флаги
g (глобальный): найти все совпадения, а не только первое. Необходим для поведения «заменить все». i (без учёта регистра): /[a-z]/i совпадает в обоих регистрах. m (многострочный): ^ и $ совпадают у переносов строки, а не только в начале/конце строки. s (dotall): . совпадает также с переносами строки. u (юникод): корректная обработка кодовых точек выше 0xFFFF (эмодзи, CJK в суррогатных парах).
Большинство начинают с /g/i/m. Флаг /s/ полезен для совпадения в многострочном тексте. Флаг /u/ рекомендуется всегда, когда может встретиться эмодзи или символы за пределами BMP — без него /./ не совпадёт с 4-байтным эмодзи как с одним символом.
Группы захвата и замена
Скобки создают группу захвата: /(\d{4})-(\d{2})/ для '2026-05' захватывает '2026' и '05' отдельно. Обращайтесь к ним через $1, $2 в строке замены. Именованные группы используют (?<name>...) и ссылаются на $<name> при замене.
Распространённые приёмы замены: $& вставляет полное совпадение; $1, $2 и т.д. вставляют группы захвата; $$ вставляет буквальный символ $. Предпросмотр замены здесь позволяет проверить результат перед запуском на реальном тексте — значительно безопаснее, чем применять прямо к производственным данным.
Типичные ловушки
Экранирование обратной косой черты. Чтобы совпасть с буквальной '.', используйте '\.'. В JavaScript-исходнике это запишется '\\.' но в этом инструменте просто набирайте '\.' — это исходник регулярного выражения.
Катастрофический откат. Паттерны вида /(a+)+/ на 'aaaa…!' могут выполняться бесконечно. Если ваш тест кажется зависшим, вероятно, в регулярном выражении вложенные квантификаторы. Упростите паттерн или применяйте тщательное проектирование (в JavaScript нет притяжательных квантификаторов).
Жадный vs ленивый квантификатор. /<.+>/ для '<a><b>' совпадает с '<a><b>' (жадный). /<.+?>/ совпадает с '<a>' (ленивый). Выбирайте подходящий для вашего случая.
Частые вопросы
›Какой диалект регулярных выражений используется?
JavaScript ECMAScript regex (тот, что реализован в браузере). Он немного отличается от PCRE, используемого в PHP, .NET или Python.
›Почему не работает lookbehind?
В современных браузерах работает — Chrome, Firefox, Safari, Edge поддерживают (?<=...) и (?<!...) с 2021 года. Если у вас не работает — ваш браузер может быть устаревшим.
›Что делает флаг 'u'?
Включает корректную обработку Unicode. Эмодзи 🎉 (суррогатная пара в UTF-16) обрабатывается как один символ с флагом /u/ и как два символа без него.
›Как совпасть с табуляцией или переносом строки?
\t для табуляции, \n для новой строки, \r для возврата каретки, \s для любого пробельного символа, включая все перечисленные.
›Почему замена не работает?
Чаще всего вы забыли флаг 'g' — замена без 'g' заменяет только первое совпадение. Включите 'g' для замены всех.
›Можно ли использовать это для очень длинного текста?
Да, до нескольких МБ. Дальше браузер может замедлиться. Избегайте катастрофических паттернов (вложенных квантификаторов) на длинных входных данных.
›Данные покидают браузер?
Нет. Паттерн и текст обрабатываются только локально.
›Есть ли шпаргалка по регулярным выражениям?
Ищите «JavaScript regex cheat sheet». Страница MDN RegExp — авторитетный справочник.
Похожие инструменты
Обновлено: