Основные выводы
- 01Тестер использует собственный механизм RegExp браузера JavaScript, поэтому результаты точно соответствуют тому, что Node.js или современный браузер произведут в производстве.
- 02Доступны все шесть флагов JavaScript (g, i, m, s, y, u) отдельно.
- 03Шаблоны замены поддерживают $1, $2, $&, и $$ для мощных предпросмотров подстановки.
- 04Ничего не отправляется на сервер — шаблоны и тестовые строки остаются полностью в вашем браузере.
Почему специальный тестер Regex превосходит ваш IDE
Регулярные выражения мощны, но сложны для быстрого прочтения. Даже опытные разработчики сталкиваются с неожиданностями: точка, которая поглощает переносы строк, жадный квантификатор, который потребляет слишком много, или группа захвата, которая не на месте. Специальный тестер убирает окружающий код, поэтому вы можете итерировать только по шаблону и входной строке одновременно.
Тестер regex на Handytool оценивает шаблоны с собственным механизмом ECMAScript RegExp браузера, что означает отсутствие слоя перевода и отсутствие несовпадения версий. Если тестер говорит, что совпадает, ваш код JavaScript тоже совпадёт. Переключайте флаги, вставьте свежую строку образца, и результаты обновляются мгновенно — без кнопки запуска.
Как тестировать шаблон Regex
Весь рабочий процесс занимает менее минуты.
- 01
Вставьте или введите ваш шаблон
Введите вашу регулярное выражение в поле шаблона. Опустите окружающие косые черты — флаги устанавливаются отдельно.
- 02
Установите ваши флаги
Переключайте g, i, m, s, y и u отдельно. Глобальный флаг почти всегда требуется для случаев использования с несколькими совпадениями.
- 03
Вставьте вашу тестовую строку
Добавьте текст, который вы хотите совпадать. Каждый нажатие клавиши повторно запускает шаблон и выделяет совпадения на входе.
- 04
Проверьте группы захвата
Прокручивайте список совпадений, чтобы увидеть позицию каждого совпадения и значение каждой нумерованной группы захвата.
- 05
Предпросмотр замены
Введите шаблон замены с использованием $1, $2 или $& для просмотра выходных данных замены вживую — отлично для проверки вызова String.replace() перед его написанием.
Быстрый контрольный список отладки Regex
Перед предположением об ошибке выполните эти проверки:
- 01Включён ли глобальный флаг, если вы ожидаете более одного совпадения?
- 02Должны ли точки совпадать с переносами строк? Включите флаг s, если это так.
- 03Используете ли вы нумерованные группы ($1, $2) или именованные группы (\k<name>) в замене?
- 04Использует ли шаблон юникод-экранирование (\p{…})? Требуется флаг u.
- 05Нужен ли флаг sticky (y) свежего lastIndex для каждого совпадения?
Приватно по проекту
Тестер regex делает нулевые сетевые запросы при вводе. Ваш шаблон и тестовая строка обрабатываются полностью механизмом JavaScript браузера — они никогда не касаются сервера. Это делает его безопасным для вставки собственных строк журнала, внутренних полезных нагрузок API или чувствительных строк при отладке.
Поскольку нет бэкенда, также нет ограничения частоты запросов, нет необходимого аккаунта и нет ограничения размера вставки за пределами того, что может обработать ваша вкладка браузера. Большинство повседневных шаблонов и строк оцениваются менее чем за миллисекунду.
Часто задаваемые вопросы о тестере Regex
Какой вариант regex используется в этом тестере?
JavaScript (ECMAScript). Шаблоны оцениваются собственным механизмом RegExp браузера, соответствуя поведению Node.js и современного браузера точно. Ретроспективные взгляды, именованные группы и экраны свойств юникода (\p{…} с флагом u) полностью поддерживаются.
Мой шаблон или тестовая строка покидают страницу?
Нет. Всё работает локально в вашем браузере — сетевые запросы не делаются при вводе шаблона, изменении флагов или предпросмотре замены.
Как я использую группы захвата в поле замены?
Используйте $1, $2, … для нумерованных групп, $& для всего совпадения и $$ для вставки буквального знака доллара. Предпросмотр обновляется вживую при изменении шаблона или шаблона.
Это работает для шаблонов Python или PCRE?
Механизм — JavaScript, поэтому большинство базовых шаблонов ведут себя идентично, но стиль Python (?P<name>…) именованные группы и владельческие квантификаторы не поддерживаются. Используйте эквиваленты JS — (?<name>…) для именованных групп.
Почему мой regex не совпадает через разрывы строк?
Включите флаг s (dot-all), или замените . на [\s\S]. Без него точка совпадает с любым символом, кроме переноса строки.