Регулярні вирази (regex) — потужний інструмент для пошуку та обробки тексту. Вони можуть здаватися складними, але базові концепції насправді прості. Цей гайд допоможе вам почати.
Що таке регулярні вирази?
Регулярний вираз — це шаблон для пошуку тексту. Наприклад, вираз \d{3}-\d{2}-\d{2} знайде всі телефонні номери формату 123-45-67.
Основний синтаксис
Символи
.— будь-який один символ\d— цифра (0-9)\w— буква, цифра або підкреслення\s— пробільний символ (пробіл, табуляція)[abc]— один із символів a, b або c[^abc]— будь-який символ, крім a, b, c
Квантифікатори
*— 0 або більше повторень+— 1 або більше повторень?— 0 або 1 повторення{3}— рівно 3 повторення{2,5}— від 2 до 5 повторень
Якорі
^— початок рядка$— кінець рядка\b— межа слова
Практичні приклади
Валідація email
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Телефон (Україна)
^\+?380\d{9}$
URL-адреса
^https?:\/\/[\w.-]+\.[a-z]{2,}(\/\S*)?$
IP-адреса (IPv4)
^(\d{1,3}\.){3}\d{1,3}$
Дата (ДД.ММ.РРРР)
^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[0-2])\.\d{4}$
Тестування регулярних виразів
Використовуйте Regex Tester Xuvero для перевірки ваших виразів у реальному часі. Інструмент підсвічує збіги та показує групи захоплення.
Regex у різних мовах програмування
JavaScript
const pattern = /^\d{3}-\d{2}-\d{2}$/;
pattern.test("123-45-67"); // true
Python
import re
re.match(r'^\d{3}-\d{2}-\d{2}$', "123-45-67") # Match object
PHP
preg_match('/^\d{3}-\d{2}-\d{2}$/', "123-45-67"); // 1
Поширені помилки
- Жадібність —
.*захопить якомога більше. Використовуйте.*?для мінімального збігу - Не екрановані спецсимволи — крапка
.без\збігається з будь-яким символом - Забуті якорі — без
^та$вираз знайде часткові збіги