Проверка регулярных выражений
Тестируйте регулярные выражения JavaScript локально с помощью флагов g/i/m/s/u/y, количества совпадений, захвата и именованных групп, диапазонов строк и столбцов и встроенного предварительного просмотра замены.
/
/g
Тестовый текст
Символы
0 / 50,000
Результаты совпадений
Введите шаблон, чтобы начать сопоставление
Текст замены
Символы
0 / 50,000
Предварительный просмотр замены
Быстрый старт
Частые сценарии
Извлечение данных
используйте (\d{4}-\d{2}-\d{2}) для извлечения дат и ([\w.]+@[\w.]+) для извлечения адресов электронной почты
Проверка формата
напишите регулярное выражение, вставьте несколько примеров и быстро проверьте, точно ли шаблон соответствует целевому формату
Пакетная замена
используйте группы захвата, чтобы перестроить содержимое. Например, преобразуйте "Имя Фамилия" в "Фамилия, Имя" с помощью шаблона (\S+)\s+(\S+) и замены $2, $1
Именованные группы
используйте (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) для извлечения дат, затем используйте $<year>/$<month>/$<day> для их перестроения.
Изучение regex
пробуйте разные шаблоны и наблюдайте за поведением совпадений, чтобы наглядно понять квантификаторы, якоря и классы символов
Многострочный режим
включите флаг m, чтобы ^ и $ совпадали по строкам; полезно для логов, кода и файлов конфигурации
Рекомендации по использованию
Ограничения и совместимость
Конфиденциальность и безопасность
Частые вопросы
Регулярное выражение (regex) — это язык шаблонов для описания текстовых структур. Думайте об этом как о «расширенном поиске» — вместо поиска фиксированного слова вы ищете все, что соответствует правилу.\n\nНапример, \\d{4}-\\d{2}-\\d{2} соответствует всем датам в формате ГГГГ-ММ-ДД, а [\\w.]+@[\\w.]+ соответствует адресам электронной почты. Regex широко используется для: поиска и извлечения текста (поиск кодов ошибок в журналах), проверки формата (проверка телефонных номеров) и пакетной замены (преобразование форматов дат).\n\nПочти каждый язык программирования (JavaScript, Python, Java, Go и т. д.) и многие инструменты (VS Code, grep, sed) поддерживают регулярные выражения с в основном схожим синтаксисом. Этот инструмент использует механизм JavaScript RegExp для быстрого онлайн-тестирования и обучения.
Регулярное выражение JavaScript по умолчанию возвращает только первое совпадение — это поведение спецификации языка, а не ограничение инструмента. Нажмите кнопку g на панели флагов, чтобы включить глобальный поиск и просмотреть все совпадения.\n\nОбратите внимание на взаимодействие между g и y: g сканирует весь текст от начала до конца, а y (прикрепленный) требует, чтобы каждое совпадение начиналось именно там, где закончилось предыдущее — если между совпадениями есть пробелы, y останавливается на первом пробеле. Обычно достаточно просто включить g без y.
Чаще всего причина одна из четырех: 1. Скобки не закрыты: каждой ( нужна соответствующая ), а каждой [ — соответствующая ]. IDE может дополнять скобки автоматически, но инструмент проверяет именно введенный шаблон. 2. Квантификатор стоит не там: *, +, ?, {n} должны идти после повторяемого элемента. Комбинации вроде *+ или ?* недопустимы; ленивые квантификаторы записываются как *? или +?. 3. Escape не завершен: одиночный \ в конце шаблона недопустим; он должен экранировать конкретный символ, например \d, \n или \\. 4. Unicode-свойства без флага u: \p{L}, \p{Script=Han} и похожие property escapes в этом инструменте требуют флаг u.
Это ссылки подстановки из JavaScript String.prototype.replace(): - $1, $2, ..., $99: содержимое соответствующей группы захвата. - $&: все совпадение целиком. - $`: текст перед совпадением. - $': текст после совпадения. - $<name>: содержимое именованной группы (?<name>...). Например, если (\w+)\s(\w+) совпадает с “hello world”, замена $2-$1 даст “world-hello”. Чтобы вставить буквальный знак $ в замену, напишите $$.
Движки regex в разных языках отличаются прежде всего в трех областях: 1. Поддерживаемый синтаксис: JavaScript не поддерживает рекурсию PCRE (?R), условные ветки (?(cond)yes|no) и атомарные группы (?>...). Модуль re в Python тоже их не поддерживает, а сторонний модуль regex поддерживает часть возможностей. Java поддерживает атомарные группы, но не рекурсию. 2. Unicode: в JavaScript \w в основном означает базовые латинские буквы, цифры и подчеркивание. Флаг u не заставляет \w автоматически совпадать с китайскими символами. Для букв Unicode используйте property escapes вроде \p{L} вместе с флагом u. 3. Переносы строк: в Python . по умолчанию не совпадает с \n, как и в JavaScript. Pattern.DOTALL в Java похож на флаг s в JavaScript. Используйте этот инструмент для быстрой проверки JavaScript RegExp, а затем подтверждайте результат в реальном движке целевого языка.