Редактор

Ожидание ввода или выполнения регулярного выражения…

Действия

?
?
?

О сервисе Онлайн тестер регулярных выражений

Вставьте текст, напишите шаблон регулярного выражения, переключайте флаги и мгновенно смотрите совпадения. Этот тестер использует тот же движок RegExp, что и современные JavaScript среды выполнения, поэтому вы видите здесь то же самое, что получите в вашем фронтенд-коде, Node.js скриптах или серверной валидации. Именованные группы захвата, просмотры вперед/назад и Unicode режим поддерживаются, когда ваша среда выполнения их поддерживает.

Почему стоит использовать этот тестер регулярных выражений

  • Сопоставление в реальном времени с опциональным режимом «live» для повторного запуска по мере ввода
  • Структурированный список совпадений с начальным индексом, конечным индексом, значением и именованными группами захвата
  • Полная поддержка синтаксиса RegExp JavaScript/ECMAScript (тот же движок, что и в вашей JS-среде)
  • Управление флагами: g, i, m, s, u, y – комбинируйте и экспериментируйте безопасно
  • Базовая оценка производительности с временем выполнения в миллисекундах за каждый запуск
  • Текстовый сводный вывод для быстрого копирования/вставки в тикеты, документацию или сообщения коммитов
  • Отлично подходит для обучения: прототипируйте шаблоны без запуска полного проекта или тестового набора
  • Идеально для повседневных задач: парсинг логов, валидация, извлечение URL / ID, быстрая очистка данных
  • Список результатов имеет мягкое ограничение, чтобы избежать зависания интерфейса при сопоставлении больших текстов

🔧 Как использовать тестер регулярных выражений for regex-tester

1

1. Вставьте или введите тестовый текст

Добавьте текст, в котором нужно выполнить поиск: логи, фрагменты, CSV, HTML, JSON – любой простой текст.

2

2. Напишите регулярное выражение

Введите регулярное выражение **без окружающих слешей**. Например: <code>\b\w+@\w+\.\w+</code> для базового шаблона email или <code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code> с именованными группами.

3

3. Установите флаги (g, i, m, s, u, y)

Переключайте флаги, такие как <code>g</code> (глобальный), <code>i</code> (без учёта регистра) или <code>m</code> (многострочный). Внутренне тестер создаёт <code>new RegExp(pattern, flags)</code> точно так же, как это делает JavaScript.

4

4. Изучите совпадения и группы

Просмотрите каждое совпадение с его индексом, опциональным конечным индексом и группами захвата. Именованные группы отображаются в виде JSON-подобной карты, чтобы вы могли скопировать их в тестовые данные, парсеры или документацию.

5

5. Скопируйте сводку

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

Синтаксис регулярных выражений и детали движка

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

Основные строительные блоки, поддерживаемые движком RegExp JavaScript.

ШаблонЗначениеПример
.Любой символ, кроме переносов строк (если не установлен флаг <code>s</code>)<code>a.c</code> → соответствует <code>abc</code>
\d, \w, \sЦифры, буквенные символы, пробелы<code>\d+</code> → <code>123</code>
\D, \W, \SОтрицательные версии вышеперечисленного<code>\S+</code> → последовательности без пробелов
[abc]Набор символов<code>[aeiou]</code> → одна гласная
[^abc]Отрицательный набор<code>[^0-9]</code> → не цифра
^, $Начало и конец ввода (или строки с <code>m</code>)<code>^Hello</code>, <code>!$</code>

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

Повторение предыдущих токенов с жадным и ленивым поведением.

ШаблонЗначениеПример
?0 или 1 раз<code>colou?r</code> → соответствует <code>color</code> и <code>colour</code>
*0 или более<code>a*b</code> → <code>b</code>, <code>aaab</code>
+1 или более<code>\d+</code> → <code>1</code>, <code>123</code>
{n}Ровно n раз<code>a{3}</code> → <code>aaa</code>
{n,}Не менее n раз<code>\d{3,}</code> → <code>123</code>, <code>1234</code>
{n,m}От n до m раз<code>a{2,4}</code> → <code>aa</code>, <code>aaa</code>, <code>aaaa</code>

Группы, Просмотры и Именованные захваты

Более продвинутые возможности, предоставляемые современными движками JavaScript.

ФункцияСинтаксисПример
Захватывающие группы(...)<code>(\d{3})-(\d{2})</code> → код региона + суффикс
Незахватывающие группы(?:...)<code>(?:https?|ftp)://</code>
Обратные ссылки\1, \2, ...<code>(\w)\1</code> → <code>aa</code>, <code>bb</code>
Опережающие проверки(?=...), (?!...)<code>\w+(?=! )</code> → слово перед <code>! </code>
Ретроспективные проверки*(?<=...), (?<!...)<code>(?<=#)\w+</code> → текст после <code>#</code> (*в современных движках)
Именованные группы(?<name>...)<code>(?<year>\d{4})</code> → <code>groups.year</code> в результатах

Флаги (Опции)

Флаги тестера напрямую соответствуют флагам JavaScript RegExp.

ФлагНазваниеЭффект
gГлобальныйНаходить все совпадения вместо только первого
iИгнорировать регистрСопоставление без учёта регистра
mМногострочный<code>^</code> и <code>$</code> соответствуют границам строк
sDotAll<code>.</code> также соответствует переводам строк
uЮникодВключает режим Юникода и экранирования свойств в современных движках
yStickyСовпадение только на текущей позиции (используется с <code>lastIndex</code>)

Производительность и Безопасность

Базовый движок JavaScript выполняет регулярные выражения синхронно. Для сохранения отзывчивости интерфейса тестер ограничивает количество найденных совпадений (например, первые 500 попаданий в глобальном режиме). Это помогает избежать перегрузки интерфейса, но не заменяет полные проверки производительности для сложных или критичных шаблонов.

Инструменты Regex в Командной Строке

Когда ваш шаблон работает здесь, вы можете повторно использовать тот же или похожий regex в терминале, скриптах или CI-задачах:

Linux / macOS

Поиск с помощью grep (расширенные регулярные выражения)

grep -E 'pattern' file.txt

Найти строки, соответствующие заданному шаблону

Поиск и замена с помощью sed

sed -E 's/pattern/replacement/g' input.txt > output.txt

Пакетные замены в текстовых файлах

Windows / PowerShell

Поиск по regex в PowerShell

Select-String -Pattern '\d{3}-\d{2}-\d{4}' -Path logs.txt

Найти шаблоны SSN в американском стиле в файлах логов (пример)

Замена по regex в PowerShell

(Get-Content input.txt) -replace 'old', 'new' | Set-Content output.txt

Простые замены на основе регулярных выражений

Практическое Применение Regex

Веб- и Фронтенд-Разработка

  • Проверка email, имен пользователей, слагов или пользовательских ID в формах
  • Извлечение параметров маршрутов из URL или путей
  • Быстрое прототипирование шаблонов для клиентской валидации
// Базовая проверка email
/^[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}$/i.test(email);
// Параметры маршрута: /post/123
const match = pathname.match(/^\/post\/(\d+)/);

Логи, Данные и Бэкенд

  • Парсинг временных меток и уровней из строк логов
  • Нормализация пробелов и очистка неструктурированного текста
  • Извлечение ID, email или ссылок из неструктурированного контента
// Сжатие повторяющихся пробелов
const normalized = text.replace(/\s+/g, ' ').trim();
// Простой сопоставитель строк логов
const m = line.match(/\[(?<date>\d{4}-\d{2}-\d{2})] (?<level>INFO|ERROR): (?<msg>.*)/);

Очистка Данных и Быстрые Скрипты

  • Удаление нежелательных HTML-тегов или атрибутов перед парсингом
  • Извлечение всех URL, email или ID из большого текстового блока
  • Подготовить поля набора данных для импорта в другую систему

❓ Frequently Asked Questions

Почему мое регулярное выражение ничего не находит?

Распространенные ошибки: 1) Специальные символы не экранированы (например ., ?, +), 2) Забыт флаг g при ожидании множественных совпадений, 3) Отсутствуют якоря (^, $) или границы слов (\b), 4) Используются функции, которые ваш движок JavaScript еще не поддерживает (например, некоторые просмотры назад). Попробуйте упростить шаблон и постепенно добавлять элементы обратно.

⏱️Что означает время выполнения (мс)?

Каждый запуск измеряется с помощью performance.now(). Значение представляет собой приблизительное измерение времени выполнения одного запуска регулярного выражения на текущем вводе. Это полезно для выявления явно дорогостоящих шаблонов, но не является полным бенчмарком или гарантией производительности в продакшене.

🔍В чем разница между первым совпадением и глобальным режимом?

Без флага g JavaScript возвращает только **первое** совпадение (если есть). С флагом g тестер использует input.matchAll() для сбора **всех** совпадений (ограниченных безопасным максимумом), включая индексы и группы захвата. Используйте глобальный режим, когда вам важны множественные вхождения.

🌍Поддерживается ли Unicode и экранирование <code>\p{...}</code>?

Да, если ваш движок JavaScript поддерживает это. Включите флаг u для перехода в режим Unicode, который открывает такие возможности как \p{Letter} или \p{Script=Greek} в современных браузерах и последних версиях Node.js.

⚠️Может ли это обнаружить катастрофический бэктрекинг?

Тестер может указать на медленные шаблоны через время выполнения, но не может полностью предотвратить катастрофический бэктрекинг: базовый движок все еще работает синхронно. Используйте этот инструмент как систему раннего предупреждения, затем тщательно тестируйте и проверяйте сложные шаблоны в своей кодовой базе.

Pro Tips

Best Practice

Создавайте регулярное выражение по частям. Начните с простого совпадения, затем постепенно добавляйте якоря, группы и квантификаторы.

Best Practice

Используйте именованные группы захвата (<code>(?<name>...)</code>) везде, где возможно. Они делают ваши совпадения самодокументируемыми и гораздо более читаемыми при код-ревью.

Best Practice

Будьте осторожны с <code>.*</code> и вложенными квантификаторами. Они могут вызывать интенсивный бэктрекинг на больших вводах. Делайте шаблоны более специфичными или ограничивайте повторения с помощью <code>{n,m}</code>.

Best Practice

При отладке временно удаляйте флаг <code>g</code> и фокусируйтесь на первом совпадении, чтобы упростить ментальную модель.

Additional Resources

Other Tools