Проверка регулярного выражения

Введите шаблон, флаги и текст для поиска совпадений.

g: все совпадения; i: без учёта регистра; m: границы строк; s: точка включает перенос; u/v: Unicode; d: позиции групп; y: строго с текущей позиции.

Как найти в тексте нужный фрагмент

Лупа выделяет повторяющийся фрагмент среди разных символов

Регулярное выражение описывает правило поиска: например, «одна или несколько цифр подряд». Для этого правила достаточно шаблона \d+. В строке «Заказ 125, сумма 3400 ₽» он найдёт числа 125 и 3400, если включён флаг g. Флагом называют короткую настройку поиска; здесь он означает «искать все совпадения». Инструмент подсвечивает найденные участки и показывает их позиции.

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

Что вводить в шаблон и флаги

Шаблон вводится без косых черт по краям: \d+, а не /\d+/g. Буква g идёт в отдельное поле. Обратный слеш здесь не нужно удваивать. Запись \\d+, которую можно встретить внутри строки JavaScript, содержит дополнительное экранирование для программного кода; в поле шаблона это уже другое выражение.

Флаг i позволяет не различать строчные и заглавные буквы. Флаг m разрешает знакам ^ и $ обозначать начало и конец каждой строки. Флаг s меняет точку: она начинает совпадать и с переносом строки. Эти настройки независимы. Добавить m, чтобы точка прошла через несколько абзацев, не получится.

Флаги u и v включают Unicode-режимы, но вместе недопустимы. В них, например, можно искать буквы через \p{L}. Более новый v расширяет возможности наборов символов; его поддержка зависит от браузера. Флаг d добавляет позиции захваченных групп. Флаг y требует совпадения строго с текущей позиции: первый поиск начинается с 0, а при сочетании с g следующий продолжается сразу после предыдущего.

Как проверить выражение на знакомых задачах

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

Номера в заказе. Для текста «Заказ 125, сумма 3400 ₽» шаблон \d+ и флаг g дают два совпадения: 125 и 3400. Уберите g, останется только 125. Если нужен именно номер заказа, общий поиск цифр слишком широк: сумма тоже число. Уточнение Заказ (\d+) найдёт фразу целиком и отдельно сохранит 125 в первой группе.

Одинаковое слово в разном регистре. В строке «Cat cat CAT» шаблон cat с флагами gi найдёт 3 участка. С одним g останется один: cat. Это удобно при поиске метки в выгрузке, где люди писали её по-разному. Но регистр иногда несёт смысл, например в пароле, поэтому включать i автоматически не стоит.

Строки, состоящие только из цифр. Возьмите три строки: 125, 3400 и x7. Шаблон ^\d+$ с флагами gm найдёт первые две, а третью пропустит. Без m весь многострочный текст не подойдёт, и совпадений будет 0. Такая проверка отделяет числовые записи от посторонних, но ещё не проверяет, входят ли числа в нужный диапазон.

Точка в имени файла. В тексте «file.txt fileXtxt» выражение file.txt с g найдёт 2 фрагмента: обычная точка означает почти любой символ. Шаблон file\.txt оставит одно совпадение, file.txt. Перед массовым поиском файлов эта маленькая черта спасает от большого списка лишних результатов.

Две фразы в кавычках. Для строки «"чай" и "кофе"» шаблон ".*" найдёт один длинный участок от первой до последней кавычки. Вариант ".*?" с g найдёт два отдельных слова в кавычках. Знак вопроса делает повторение ленивым: оно останавливается на первой подходящей границе. Для формата с экранированными кавычками понадобится более точное правило.

Части даты. Шаблон (\d{2})\.(\d{2})\.(\d{4}) на строке «05.10.2026» даст полное совпадение и три группы: 05, 10, 2026. Это помогает разделить день, месяц и год перед обработкой. Однако «99.99.2026» тоже подходит по форме. Существование даты проверяют отдельно, иначе аккуратная запись легко превращается в несуществующий день календаря.

Что означают позиции, группы и пустые совпадения

Диапазон 6–9 означает начало с индекса 6 и конец перед индексом 9. Отсчёт начинается с нуля, длина участка равна 9 − 6 = 3. JavaScript считает позиции в кодовых единицах UTF-16: у обычной русской буквы одна такая единица, а у многих эмодзи две. Поэтому точка с флагами gu на тексте «😀x» найдёт два символа с началами 0 и 2, а не 0 и 1.

Круглые скобки сохраняют часть совпадения в группу. Номера идут по порядку открывающих скобок, начиная с 1. Группа (?<year>\d{4}) дополнительно получает имя year. Если необязательная группа не участвовала, это отличается от найденной пустой строки: в подробностях эти состояния подписаны отдельно. При повторении группы сохраняется её последний захват.

Пустой шаблон допустим. Он совпадает с позициями между символами и по краям, поэтому для «abc» с g получается четыре совпадения. Якорь ^ тоже ничего не «съедает»: он отмечает место. В подсветке пустые совпадения показаны вертикальной чертой. Такая выдача не означает, что инструмент нашёл четыре скрытые буквы.

Где заканчиваются возможности проверки

Здесь используется синтаксис JavaScript того браузера, в котором открыта страница. Правило для Python, PHP или редактора с другим движком может требовать изменений. Особенно осторожно переносите выражения с именованными группами, проверкой текста позади совпадения и расширенными классами Unicode. Перед применением запустите ту же контрольную строку уже в целевой программе.

Инструмент принимает до 2 000 единиц UTF-16 в шаблоне и 50 000 в тексте. Показывает первые 1 000 совпадений, а подробности групп для первых 100. Слишком долгий поиск прерывается примерно через 500 мс вычисления. Это защита страницы, а не измерение производительности: загрузка worker, устройства и фоновые вкладки влияют на время. Сообщение об остановке не доказывает ошибку синтаксиса.

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

Регулярное выражение находит фрагменты, но не сравнивает версии документа и не понимает структуру любого файла. После правки пригодится сравнение двух текстов. Для вложенных объектов используйте проверку и форматирование JSON: скобки внутри строк и экранирование надёжнее разбирать по правилам формата.

Почему шаблон находит не то, что ожидалось

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

Почему \w не находит русские слова?

В JavaScript класс \w в основном описывает латинские буквы A–Z и a–z, цифры и подчёркивание. Это не обозначение всех букв мира. Для букв разных алфавитов используйте \p{L}+ с флагом u или v; для конкретного русского набора можно явно записать [А-Яа-яЁё]+.

Как искать знак плюс, скобку или вопросительный знак буквально?

У служебного символа нужно убрать специальное значение обратным слешем: \+, \(, \?. Например, C\+\+ найдёт C++ целиком. Если вставить просто C++, браузер сообщит об ошибке повторения. Внутри квадратных скобок правила экранирования отличаются, особенно в Unicode-режимах.

Можно ли проверить всю строку, а не найти её часть?

Обычно шаблон ограничивают якорями ^ и $, не включая m. Например, ^[0-9]{4}$ допускает ровно четыре цифры. Для пустой строки потребуется явно разрешённое нулевое количество; один знак + требует хотя бы один символ. В JavaScript без m якорь $ проверяет конец всей строки.

Почему цифры другого алфавита не находятся через \d?

В JavaScript \d соответствует десяти ASCII-цифрам 0–9. Для десятичных цифр разных письменностей используйте \p{Decimal_Number} с u или v. Но перед преобразованием такого результата в число отдельно проверьте правила целевой программы: визуальное сходство цифры не гарантирует одинаковое чтение.

Как найти пересекающиеся совпадения?

Обычный глобальный поиск продолжает работу после найденного участка и не возвращается внутрь него. В ababa шаблон aba с g даст одно совпадение. Проверка вперёд (?=(aba)) с g даёт две пустые позиции, 0 и 2, а нужный текст находится в группе 1. Поэтому смотреть нужно и на группы, и на подсветку.

Почему ленивый шаблон тоже работает долго?

Ленивость меняет порядок перебора вариантов, но не убирает сам перебор. Вложенные повторения вроде (a+)+ могут проверять множество разбиений, когда конец строки не подходит. Уберите неоднозначное повторение, точнее опишите разделитель и проверьте длинную неудачную строку, а не только короткую удачную.

Можно ли одним выражением проверить адрес электронной почты?

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

Чем отличаются обычный пробел и неразрывный?

Они могут выглядеть одинаково, но имеют разные коды. Простой пробел в шаблоне не обязан совпадать с неразрывным пробелом из скопированной цены. Класс \s охватывает оба, а также табуляции и переносы. Если разрешены только пробелы внутри строки, задайте точный набор, чтобы случайно не захватить соседний абзац.

Похожие калькуляторы

Возможно вам пригодятся ещё несколько калькуляторов по данной теме:

Есть что добавить?

Напишите своё мнение, комментарий или предложение.