🔤 Регулярні вирази

Шпаргалка: Регулярні вирази

Символи, квантифікатори, класи, групи, прапорці та готові патерни для email, телефону, URL і дати — повна довідка

Основні символи

Будь-який символ
.
Початок рядка
^
Кінець рядка
$
Цифра [0-9]
\d
Не цифра
\D
Буква/цифра/підкреслення
\w
Не словниковий символ
\W
Пробільний символ
\s
✦ Символ . відповідає будь-якому символу, крім символу нового рядка \n. \s охоплює пробіл, табуляцію та перенос рядка. \S — усе, що не є пробільним символом.

Квантифікатори

0 або більше
*
1 або більше
+
0 або 1
?
Рівно n
{n}
n або більше
{n,}
Від n до m
{n,m}
✦ Жадібний (greedy) квантифікатор *, + чи ? захоплює якомога більше символів. Додайте ? одразу після нього (*?, +?, ??) — і він стане лінивим (lazy) та захопить мінімально можливий збіг.

Класи символів

ПатернЩо означає
[abc]Один із символів: a, b або c
[^abc]Будь-який символ, КРІМ a, b, c (заперечення)
[a-z]Будь-яка мала літера латиниці від a до z
[A-Z]Будь-яка велика літера латиниці
[0-9]Будь-яка цифра (те саме, що \d)
[a-zA-Z0-9_]Літера, цифра або підкреслення (те саме, що \w)

Групи та альтернатива

Група захоплення
(...)
Група без захоплення
(?:...)
Альтернатива (АБО)
кіт|пес
Межа слова
\b
✦ (...) зберігає збіг як окрему групу, доступну для подальшого використання (наприклад у заміні $1 або match[1]). (?:...) групує символи для квантифікатора чи альтернативи, але сам збіг не зберігає.

Якорі меж слова

ПатернЩо означає
\bМежа слова — позиція між словниковим (\w) і не-словниковим символом
\BНЕ межа слова — позиція всередині слова або поза ним, де межі немає

Прапорці (flags)

ПрапорецьНазваЩо змінює
gglobalШукає всі збіги в рядку, а не лише перший
iignore caseПошук без урахування регістру літер
mmultiline^ та $ відповідають межам кожного рядка тексту, а не лише всього рядка

Практичні патерни

Email (простий)
^[\w.-]+@[\w.-]+\.\w+$
Телефон UA
^\+380\d{9}$
URL
^https?://[\w.-]+\.\w+(/\S*)?$
Дата YYYY-MM-DD
^\d{4}-\d{2}-\d{2}$
✦ ^[\w.-]+@[\w.-]+\.\w+$ відповідає адресам виду user.name@example.com. ^\+380\d{9}$ відповідає українському мобільному у форматі +380501234567 (код 380 і рівно 9 цифр номера). ^\d{4}-\d{2}-\d{2}$ перевіряє лише формат дати (4 цифри - 2 цифри - 2 цифри), а не її реальну коректність (наприклад, 2026-13-40 теж пройде перевірку формату).
✦ Щоб знайти спеціальний символ буквально (наприклад крапку чи дужку), його потрібно екранувати зворотною похилою рискою: \. , \* , \+ , \( , \) , \[ , \] , \{ , \} , \| , \^ , \$ , \\ . Без екранування ці символи мають спеціальне значення в патерні.

Як користуватися шпаргалкою

Ця шпаргалка зосереджує найважливіший синтаксис регулярних виразів — символи, квантифікатори, класи символів, групи та прапорці — у компактному форматі для швидкого пошуку під час написання патернів. Матеріал систематизований від базових елементів до готових практичних прикладів.

Ефективне використання

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

Часті запитання (FAQ)

Що таке регулярний вираз?
Регулярний вираз (regex, regexp) — це рядок-патерн, що описує певний набір або структуру символів у тексті. Він використовується для пошуку, перевірки та заміни фрагментів тексту за правилами, а не за точним збігом.
У чому різниця між жадібним (greedy) та лінивим (lazy) квантифікаторами?
Жадібний квантифікатор (наприклад *, +) намагається захопити якомога більше символів, що відповідають патерну, і лише потім відступає назад за потреби. Лінивий квантифікатор (*?, +?) захоплює якомога менше символів — мінімально можливий збіг.
Як працюють групи захоплення в регулярних виразах?
Група захоплення (...) виділяє частину збігу в окремий підрезультат, який можна отримати окремо (наприклад через match[1]) або використати в заміні. Група (?:...) працює аналогічно для групування та квантифікаторів, але не зберігає результат окремо.
Що означають прапорці g, i, m у регулярних виразах?
Прапорець g (global) шукає всі збіги в рядку, а не лише перший. Прапорець i (ignore case) робить пошук нечутливим до регістру літер. Прапорець m (multiline) змінює поведінку ^ та $ так, що вони відповідають межам кожного рядка, а не лише всього рядка.
Чому складні регулярні вирази важко читати та підтримувати?
Регулярні вирази компактні, але їхній синтаксис символьний і не завжди самопояснювальний: довгі патерни з вкладеними групами й квантифікаторами важко перевірити на помилки без тестування. Рекомендується розбивати складні патерни на менші частини, коментувати їх та покривати тестовими прикладами.