Редактор
Ожидание ввода или выполнения регулярного выражения…
Действия
Почему стоит использовать этот тестер регулярных выражений
- Сопоставление в реальном времени с опциональным режимом «live» для повторного запуска по мере ввода
- Структурированный список совпадений с начальным индексом, конечным индексом, значением и именованными группами захвата
- Полная поддержка синтаксиса RegExp JavaScript/ECMAScript (тот же движок, что и в вашей JS-среде)
- Управление флагами: g, i, m, s, u, y – комбинируйте и экспериментируйте безопасно
- Базовая оценка производительности с временем выполнения в миллисекундах за каждый запуск
- Текстовый сводный вывод для быстрого копирования/вставки в тикеты, документацию или сообщения коммитов
- Отлично подходит для обучения: прототипируйте шаблоны без запуска полного проекта или тестового набора
- Идеально для повседневных задач: парсинг логов, валидация, извлечение URL / ID, быстрая очистка данных
- Список результатов имеет мягкое ограничение, чтобы избежать зависания интерфейса при сопоставлении больших текстов
🔧 Как использовать тестер регулярных выражений for regex-tester
1. Вставьте или введите тестовый текст
Добавьте текст, в котором нужно выполнить поиск: логи, фрагменты, CSV, HTML, JSON – любой простой текст.
2. Напишите регулярное выражение
Введите регулярное выражение **без окружающих слешей**. Например: <code>\b\w+@\w+\.\w+</code> для базового шаблона email или <code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code> с именованными группами.
3. Установите флаги (g, i, m, s, u, y)
Переключайте флаги, такие как <code>g</code> (глобальный), <code>i</code> (без учёта регистра) или <code>m</code> (многострочный). Внутренне тестер создаёт <code>new RegExp(pattern, flags)</code> точно так же, как это делает JavaScript.
4. Изучите совпадения и группы
Просмотрите каждое совпадение с его индексом, опциональным конечным индексом и группами захвата. Именованные группы отображаются в виде JSON-подобной карты, чтобы вы могли скопировать их в тестовые данные, парсеры или документацию.
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> соответствуют границам строк |
| s | DotAll | <code>.</code> также соответствует переводам строк |
| u | Юникод | Включает режим Юникода и экранирования свойств в современных движках |
| y | Sticky | Совпадение только на текущей позиции (используется с <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
❓Почему мое регулярное выражение ничего не находит?
., ?, +), 2) Забыт флаг g при ожидании множественных совпадений, 3) Отсутствуют якоря (^, $) или границы слов (\b), 4) Используются функции, которые ваш движок JavaScript еще не поддерживает (например, некоторые просмотры назад). Попробуйте упростить шаблон и постепенно добавлять элементы обратно.⏱️Что означает время выполнения (мс)?
performance.now(). Значение представляет собой приблизительное измерение времени выполнения одного запуска регулярного выражения на текущем вводе. Это полезно для выявления явно дорогостоящих шаблонов, но не является полным бенчмарком или гарантией производительности в продакшене.🔍В чем разница между первым совпадением и глобальным режимом?
g JavaScript возвращает только **первое** совпадение (если есть). С флагом g тестер использует input.matchAll() для сбора **всех** совпадений (ограниченных безопасным максимумом), включая индексы и группы захвата. Используйте глобальный режим, когда вам важны множественные вхождения.🌍Поддерживается ли Unicode и экранирование <code>\p{...}</code>?
u для перехода в режим Unicode, который открывает такие возможности как \p{Letter} или \p{Script=Greek} в современных браузерах и последних версиях Node.js.⚠️Может ли это обнаружить катастрофический бэктрекинг?
Pro Tips
Создавайте регулярное выражение по частям. Начните с простого совпадения, затем постепенно добавляйте якоря, группы и квантификаторы.
Используйте именованные группы захвата (<code>(?<name>...)</code>) везде, где возможно. Они делают ваши совпадения самодокументируемыми и гораздо более читаемыми при код-ревью.
Будьте осторожны с <code>.*</code> и вложенными квантификаторами. Они могут вызывать интенсивный бэктрекинг на больших вводах. Делайте шаблоны более специфичными или ограничивайте повторения с помощью <code>{n,m}</code>.
При отладке временно удаляйте флаг <code>g</code> и фокусируйтесь на первом совпадении, чтобы упростить ментальную модель.
Additional Resources
Other Tools
- Форматер CSS
- Форматер HTML
- Форматер JavaScript
- Форматер PHP
- Выбор цвета
- Экстрактор спрайтов
- Декодер Base64
- Кодировщик Base64
- Форматер C#
- Форматер CSV
- Dockerfile Formatter
- Форматер Elm
- Форматер ENV
- Форматер Go
- Форматер GraphQL
- Форматер HCL
- Форматер INI
- Форматер JSON
- Форматер LaTeX
- Форматер Markdown
- Форматер Objective-C
- Php Formatter
- Форматер Proto
- Форматер Python
- Форматер Ruby
- Форматер Rust
- Форматер Scala
- Форматер shell-скриптов
- Форматер SQL
- Форматтер SVG
- Форматтер Swift
- Форматтер TOML
- Typescript Formatter
- Форматтер XML
- Форматтер YAML
- Форматтер Yarn
- Минификатор CSS
- Html Minifier
- Javascript Minifier
- Минификатор JSON
- Минификатор XML
- Просмотрщик HTTP-заголовков
- PDF в текст
- Проверка позиций в SERP
- Поиск Whois