Бесплатный онлайн-тестер и валидатор Regex - Мгновенная проверка шаблонов
Тестируйте и проверяйте регулярные выражения онлайн с подсветкой в реальном времени. Бесплатный тестер шаблонов regex с проверкой синтаксиса, результатами сопоставления и функцией сохранения. Тестируйте regex прямо сейчас!
Тестер Regex-шаблонов
Результаты совпадений
Введите шаблон и тестовый текст для просмотра результатов
Сохранить шаблон
Результаты совпадений
Введите шаблон и тестовый текст для просмотра результатов
Сохраненные шаблоны
Пока нет сохраненных шаблонов
Руководство по символам Regex
.Соответствует любому символу, кроме новой строки\dСоответствует любой цифре (0-9)\DСоответствует любому не цифровому символу\wСоответствует любому символу слова (a-z, A-Z, 0-9, _)\WСоответствует любому не словарному символу\sСоответствует любому пробельному символу\SСоответствует любому не пробельному символу^Соответствует началу строки$Соответствует концу строки*Соответствует 0 или более предыдущим символам+Соответствует 1 или более предыдущим символам?Соответствует 0 или 1 предыдущему символу{n}Соответствует точно n предыдущим символам{n,}Соответствует не менее n предыдущих символов{n,m}Соответствует от n до m предыдущих символов[abc]Соответствует любому символу в скобках[^abc]Соответствует любому символу, не входящему в скобки(abc)Группирует несколько токенов и захватывает совпадениеa|bСоответствует либо a, либо b\bСоответствует позиции границы словаДокументация
Что такое тестер регулярных выражений
Тестер регулярных выражений — это инструмент, который проверяет регулярное выражение на фрагменте текста и показывает совпадения. Регулярное выражение, или регулярка, — это короткая последовательность символов, описывающая шаблон в тексте, например «три цифры подряд» или «любое слово, начинающееся с заглавной буквы». Этот валидатор регулярных выражений позволяет ввести шаблон и тестовый текст, а затем сразу увидеть выделенные совпадения без написания кода.
Регулярные выражения используются во многих языках программирования для поиска текста, проверки правильности пользовательского ввода и извлечения отдельных фрагментов из большого блока текста. Синтаксис у них компактный, но в нём легко допустить ошибку, поэтому проверка шаблона перед использованием в программе помогает заранее обнаружить недочёты.
Как проверить регулярное выражение онлайн
- Введите шаблон. Введите регулярное выражение в поле шаблона. Инструмент проверяет синтаксис по мере ввода и показывает сообщение об ошибке, если шаблон недействителен, например если квадратная или круглая скобка осталась незакрытой.
- Выберите флаги. Флаги изменяют способ применения шаблона (см. ниже).
- Введите тестовый текст. Введите или вставьте текст для поиска в поле тестового текста.
- Просмотрите результаты. Совпадения выделяются в тексте, а инструмент сообщает их количество. Если тестовый текст введён, также указывается, совпадает ли шаблон со всем текстом от начала до конца или только с его частью.
- Сохраните шаблон. Шаблон можно сохранить с короткой меткой, чтобы использовать его позже. Сохранённые шаблоны хранятся в браузере, а не на сервере, поэтому они доступны только на том же устройстве и в том же браузере.
- Скопируйте результаты. Совпавший текст или сам шаблон можно скопировать в буфер обмена одним щелчком.
Флаги регулярных выражений
Флаг — это одна буква, добавленная после шаблона и изменяющая его поведение. Этот инструмент поддерживает четыре флага, по отдельности или в сочетании:
| Флаг | Имя | Действие |
|---|---|---|
g | Глобальный поиск | Находит все совпадения в тексте, а не останавливается на первом. |
i | Без учёта регистра | Игнорирует различия между прописными и строчными буквами. |
m | Многострочный режим | Заставляет ^ и $ соответствовать началу и концу каждой строки, а не только началу и концу всего текста. Это изменяет расположение найденных совпадений, но не проверку всего текста, описанную ниже. |
s | Точка: все символы | Заставляет . также соответствовать символам перевода строки. |
Флаги можно сочетать, например gi означает глобальный поиск без учёта регистра, а gms — глобальный многострочный поиск, при котором точка соответствует всем символам.
Как инструмент находит совпадения
Механизм сопоставления всегда ищет каждое вхождение шаблона в тексте, поэтому подсчёт совпадений ведётся так, словно глобальный флаг включён, даже если он не выбран в раскрывающемся списке. Для каждого совпадения записываются его позиция и длина, после чего исходный текст разделяется на совпавшие и несовпавшие фрагменты, чтобы совпадения можно было выделить.
Чтобы проверить, совпадает ли шаблон со всем текстом, инструмент заключает его в незахватывающую группу и добавляет якоря: ^(?:pattern)$. Группировка важна, потому что | (альтернация) имеет более низкий приоритет, чем якоря. Без группы шаблон вроде cat|dog с якорями ^cat|dog$ фактически означал бы «начинается с cat или заканчивается на dog», что не то же самое, что «весь текст — это cat или dog».
При этой проверке также удаляется многострочный флаг. Если установлен m, ^ и $ соответствуют каждому разрыву строки, поэтому проверка с якорями отвечала бы на вопрос «совпадает ли какая-либо строка?», а не «совпадает ли весь текст?». Для этой проверки инструмент удаляет m, но сохраняет i и s, поскольку эти два флага изменяют совпадение шаблона, а не положение якорей. Поэтому результат всегда относится ко всему тексту, включая разрывы строк.
Пример расчёта
Шаблон: \d+ (одна или более цифр), флаг: g, тестовый текст: Room 12 has 5 chairs.
- Найденные совпадения:
12и5, поэтому количество совпадений равно 2. - Проверка всего текста: шаблон не совпадает со всем текстом, поскольку в нём также есть буквы и пробелы.
Если заменить тестовый текст на 12345, тот же шаблон совпадёт со всей строкой, поэтому проверка всего текста даст значение true.
Справочник по синтаксису регулярных выражений
Поиск символов
| Символ | Значение | Пример | Совпадения |
|---|---|---|---|
. | Любой символ, кроме перевода строки | a.c | «abc», «adc», «a1c» |
\d | Любая цифра от 0 до 9 | \d{3} | "123", "456" |
\D | Любой символ, не являющийся цифрой | \D+ | «abc», «xyz» |
\w | Любая буква, цифра или символ подчёркивания | \w+ | «abc123», «test_123» |
\W | Любой символ, не являющийся буквой, цифрой или символом подчёркивания | \W+ | "!@#" |
\s | Любой пробельный символ | a\sb | «a b» |
\S | Любой символ, не являющийся пробельным | \S+ | «abc» |
Якоря позиций
| Символ | Значение | Пример | Совпадения |
|---|---|---|---|
^ | Начало строки | ^abc | «abc» в начале строки |
$ | Конец строки | abc$ | «abc» в конце строки |
\b | Граница слова | \bword\b | «word» как отдельное слово |
Квантификаторы
| Символ | Значение | Пример | Совпадения |
|---|---|---|---|
* | Ноль или более повторений предыдущего элемента | a*b | «b», «ab», «aab» |
+ | Одно или более повторений предыдущего элемента | a+b | «ab», «aab» |
? | Ноль или одно повторение предыдущего элемента | colou?r | «color», «colour» |
{n} | Ровно n повторений предыдущего элемента | a{3} | «aaa» |
{n,} | Не менее n повторений предыдущего элемента | a{2,} | «aa», «aaa» |
{n,m} | От n до m повторений предыдущего элемента | a{2,4} | «aa», «aaa», «aaaa» |
Наборы символов и группы
| Символ | Значение | Пример | Совпадения |
|---|---|---|---|
[abc] | Любой один символ из перечисленных в скобках | [aeiou] | Любая отдельная гласная |
[^abc] | Любой символ, не перечисленный в скобках | [^aeiou] | Любой согласный символ |
(abc) | Объединяет символы в группу и захватывает совпадение | (abc)+ | «abc», «abcabc» |
| a\ | b | Соответствует a или b | cat\ |
Полезно знать ещё о двух возможностях. Просмотр вперёд, записываемый как a(?=b), находит «a» только в том случае, если за ним следует «b», не включая «b» в совпадение. Просмотр назад, записываемый как (?<=a)b, находит «b» только в том случае, если ему непосредственно предшествует «a».
Распространённые примеры шаблонов
Эти шаблоны можно вставить в инструмент, чтобы посмотреть, как они работают на примерах текста.
Только цифры: ^\d+$ соответствует строке, состоящей исключительно из цифр, например «48210», и не принимает строки с буквами или пробелами.
Адрес электронной почты (базовая проверка): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ соответствует адресам вида name@domain.tld, например «user@example.com». Это простая проверка, а не полная проверка формата электронной почты, определённого интернет-стандартами, поэтому некоторые необычные, но допустимые адреса не пройдут её.
Номер телефона в США: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ соответствует форматам вроде «(123) 456-7890», «123-456-7890» и «1234567890».
Дата в формате ГГГГ-ММ-ДД: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ проверяет, что месяц находится в диапазоне от 01 до 12, а день — от 01 до 31. При этом не проверяется допустимость дня для конкретного месяца, поэтому принимается значение «2024-02-30», хотя в феврале никогда не бывает 30 дней.
Часто задаваемые вопросы
Что такое регулярное выражение? Регулярное выражение — это последовательность символов, задающая шаблон поиска. Оно используется для поиска, сопоставления и редактирования текста в большинстве языков программирования и текстовых редакторов.
Что делает глобальный флаг?
Без глобального флага поиск обычно прекращается после первого совпадения. С глобальным флагом (g) поиск продолжается и сообщает обо всех совпадениях в тексте. Этот инструмент всегда ищет все совпадения при подсчёте, независимо от выбранного флага.
Как найти точку как обычный символ или другой специальный символ?
Поставьте перед ним обратную косую черту. Например, \. соответствует обычной точке, а не «любому символу», как означает точка без экранирования ..
В чём разница между .* и .*??
.* — жадный квантификатор: он сопоставляет максимально возможное число символов. .*? — ленивый квантификатор: он сопоставляет минимальное число символов, при котором оставшаяся часть шаблона всё ещё успешно срабатывает.
Почему инструмент сообщает, что текст совпадает не полностью, хотя совпадает каждая строка?
Проверка всего текста рассматривает его как одну строку, включая разрывы строк. Шаблон вроде \d+ отдельно совпадает с каждой строкой 12 и 34, но две строки вместе с разделяющим их переводом строки не состоят только из цифр, поэтому ответ для всего текста отрицательный. Чтобы сопоставить текст, занимающий несколько строк, шаблон должен также охватывать разрывы строк, например с помощью [\s\S]+.
Как проверить совпадение всей строки с шаблоном, а не только её части?
Добавьте ^ в начало и $ в конец шаблона, например ^[0-9]+$ для строки, состоящей только из цифр.
Соответствует ли этот тестер правилам регулярных выражений других языков программирования? Этот инструмент использует встроенный в JavaScript механизм регулярных выражений. Основной синтаксис, например классы символов и квантификаторы, является общим для таких языков, как Python, Java и Perl, но некоторые детали различаются, поэтому шаблон, работающий здесь, не обязательно будет вести себя одинаково везде.
Источники
- "Regular expression." Википедия, Фонд Викимедиа. https://en.wikipedia.org/wiki/Regular_expression
- Документация MDN Web Docs. "Regular expressions." Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
- Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.