Безкоштовний онлайн тестер і валідатор 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Збігається з позицією межі словаДокументація
Що таке тестер регулярних виразів
Тестер регулярних виразів — це інструмент, який перевіряє регулярний вираз на фрагменті тексту й показує, що саме він знаходить. Регулярний вираз, або regex, — це коротка послідовність символів, що описує шаблон у тексті, наприклад «три цифри поспіль» або «будь-яке слово, що починається з великої літери». Цей валідатор регулярних виразів дає змогу ввести шаблон і тестовий текст, а потім одразу побачити знайдені збіги без написання коду.
Регулярні вирази використовують у багатьох мовах програмування для пошуку тексту, перевірки правильності формату введених користувачем даних і вилучення певних фрагментів із великого текстового блока. Синтаксис компактний, але в ньому легко помилитися, тому перевірка шаблону перед використанням у програмі допомагає завчасно виявити помилки.
Як перевірити регулярний вираз онлайн
- Введіть шаблон. Введіть регулярний вираз у поле шаблону. Інструмент перевіряє синтаксис під час введення й показує повідомлення про помилку, якщо шаблон недійсний, наприклад коли дужка або кругла дужка залишилася незакритою.
- Виберіть прапорці. Прапорці змінюють спосіб застосування шаблону (див. нижче).
- Введіть тестовий текст. Введіть або вставте текст для пошуку в поле тестового тексту.
- Перегляньте результати. Знайдені збіги виділяються в тексті, а інструмент повідомляє, скільки їх знайдено. Якщо тестовий текст є, також зазначається, чи відповідає шаблон усьому тексту від початку до кінця, чи лише його частині.
- Збережіть шаблон. Шаблон можна зберегти з короткою назвою, щоб повторно використовувати його пізніше. Збережені шаблони зберігаються у браузері, а не на сервері, тому вони відображаються лише на тому самому пристрої та в тому самому браузері.
- Скопіюйте результати. Знайдений текст або сам шаблон можна скопіювати в буфер обміну одним натисканням.
Прапорці регулярних виразів
Прапорець — це одна літера, додана після шаблону, яка змінює його поведінку. Цей інструмент підтримує чотири прапорці, окремо або в комбінаціях:
| Прапорець | Назва | Вплив |
|---|---|---|
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».
Дата у форматі YYYY-MM-DD: ^\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.