Как проверить регулярное выражение?

Введите шаблон и образец текста — и инструмент подсветит все совпадения, покажет группы захвата и позволит включать и выключать флаги: глобальный, многострочный, без учёта регистра и другие. Сопоставление идёт в вашем браузере на собственном движке регулярных выражений JavaScript, поэтому результат точно такой, какой увидит ваш код.

Работает полностью в вашем браузере · без загрузки · без аккаунта · без водяных знаков

  1. Введите шаблон и отметьте нужные флаги.
  2. Вставьте текст, на котором хотите проверять.
  3. Посмотрите подсветку, затем список совпадений ниже.
Флаги

Подсветка

Совпадения

    Что умеет эта страница

    Когда использовать этот инструмент

    • Нужно попробовать регулярное выражение JavaScript на образце строки.
    • Хочется увидеть, какие группы захвата и флаги дают какие совпадения.
    • Надо проверить шаблон, прежде чем вставлять его во фронтенд-код.

    Когда стоит выбрать другое решение

    • Шаблон рассчитан на Python, PCRE, .NET или Java: синтаксис и поведение отката там отличаются от RegExp в JavaScript.
    • Входные данные недоверенные, а шаблон может катастрофически откатываться: проверка идёт в главном потоке и способна заморозить вкладку.
    • Нужны пошаговое объяснение, замеры производительности или таймаут.

    Чем он уступает другим вариантам

    regex101 и подобные инструменты позволяют переключать движки, объясняют каждый токен и ставят таймаут. Эта страница запускает собственный RegExp браузера без всех этих защит, поэтому она верна JavaScript, но разделяет и его ограничения: ни атомарных групп, ни притяжательных квантификаторов, ни защиты от патологического шаблона. Намеренно плохое выражение может подвесить вкладку, пока вы её не закроете.

    Куда попадают ваши файлы

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

    Вопросы об этом инструменте

    Страница перестала отвечать при моём шаблоне. Почему?
    Это катастрофический откат: шаблон вида (a+)+b на длинной последовательности «a» заставляет движок перебрать экспоненциальное число способов потерпеть неудачу. Страница ограничивает число совпадений, чтобы процесс не ушёл в бесконечность, но одно упрямое совпадение всё равно может занять время. Перепишите вложенные квантификаторы так, чтобы у движка остался один путь, — например a+b, — или закрепите шаблон через ^ или $.
    Какие флаги можно включить?
    g находит все совпадения вместо первого, i игнорирует регистр, m заставляет ^ и $ срабатывать на переносах строк, s позволяет . совпадать с переводом строки, а u включает полный режим Unicode, нужный для свойств \p{...} и корректной работы с символами за пределами базовой плоскости. Результат — ровно то, что даёт собственный движок JavaScript, поэтому он совпадает с вашим кодом.
    Почему в списке только несколько тысяч совпадений?
    Список ограничен, чтобы шаблон, совпадающий на каждом символе, — например . с глобальным флагом на длинном документе, — не подвешивал вкладку, пока строятся тысячи строк. Ограничение достаточно высоко для реалистичных тестовых строк; если вы в него упёрлись, сузьте шаблон или сократите образец.

    Другие инструменты той же группы