20 regex-паттернов, которые должен сохранить каждый разработчик
Практическая шпаргалка самых полезных регулярных выражений — email, URL, телефон, IP, даты и другое. Копируй, вставляй, используй.
Регулярные выражения — один из тех инструментов, которые кажутся магией, когда работают, и абсолютно сводят с ума, когда нет. Я собираю полезные паттерны годами, и эти 20 — те, к которым я возвращаюсь снова и снова.
Сохраните эту страницу в закладки. Вы к ней вернётесь.
Основы, которые вы забудете
Перед паттернами — быстрое повторение того, что путает:
.совпадает с любым символом (кроме переноса строки)*означает ноль или более,+означает один или более,?означает ноль или один\d— цифра,\w— символ слова,\s— пробел^— начало строки,$— конец строки()группирует,[]задаёт класс символов,{}задаёт количество
20 паттернов
1. Email-адрес
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Покрывает большинство реальных email-адресов. Не соответствует RFC 5322 (почти ничто не соответствует), но обрабатывает 99% валидных адресов.
2. URL (HTTP/HTTPS)
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
Совпадает с HTTP и HTTPS URL с путями и query-строками.
3. Номер телефона (международный)
^\+?[1-9]\d{1,14}$
Формат E.164 — работает международно. Для России: ^(\+7|8)\d{10}$
4. IPv4-адрес
^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$
Проверяет каждый октет на 0-255. Более простые паттерны принимают невалидные адреса вроде 999.999.999.999.
5. IPv6-адрес
^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$
Базовый полноформатный IPv6. Не покрывает сокращённую нотацию (::), но обрабатывает самый распространённый формат.
6. Дата (ГГГГ-ММ-ДД)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
Формат даты ISO 8601. Проверяет диапазоны месяцев и дней, но не проверяет невозможные даты вроде 31 февраля.
7. Время (ЧЧ:ММ, 24 часа)
^([01]\d|2[0-3]):([0-5]\d)$
24-часовой формат, 00:00 до 23:59.
8. Шестнадцатеричный цветовой код
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
Совпадает с 3-значными и 6-значными hex-цветами: #fff, #1a2b3c.
9. Надёжный пароль
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
Минимум 8 символов с заглавной, строчной буквой, цифрой и спецсимволом. Настройте минимальную длину и допустимые символы по необходимости.
10. Имя пользователя
^[a-zA-Z0-9_-]{3,20}$
Буквенно-цифровое с подчёркиваниями и дефисами, 3-20 символов.
11. HTML-тег
<\/?[\w\s]*>|<.+[\W]>
Совпадает с открывающими и закрывающими HTML-тегами. Не используйте regex для парсинга HTML в реальной работе — используйте настоящий парсер. Но для быстрого поиска работает.
12. Обрезка пробелов
^\s+|\s+$
Совпадает с начальными и конечными пробелами. Полезно для операций очистки.
13. Дублированные слова
\b(\w+)\s+\1\b
Ловит повторяющиеся слова вроде «и и» или «в в». Отлично для корректуры.
14. Расширение файла
\.([a-zA-Z0-9]+)$
Извлекает расширение файла. Группа 1 даёт только расширение без точки.
15. Слаг (URL-дружественная строка)
^[a-z0-9]+(?:-[a-z0-9]+)*$
Проверяет URL-слаги: строчные буквы, цифры и дефисы. Без последовательных дефисов, не начинается и не заканчивается дефисом.
16. Номер кредитной карты (базовый)
^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13})$
Обнаруживает паттерны Visa, MasterCard и American Express. Только для проверки формата — для реальной валидации всегда используйте платёжный процессор.
17. UUID v4
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
Проверяет формат UUID версии 4 с правильными битами версии и варианта.
18. Строковое значение JSON
"(?:[^"\\]|\\.)*"
Совпадает с правильно экранированным строковым значением JSON, обрабатывая обратные слеши.
19. CSS-свойство
([a-z-]+)\s*:\s*([^;]+);
Извлекает пары свойство-значение CSS. Группа 1 — имя свойства, группа 2 — значение.
20. Markdown-ссылка
\[([^\]]+)\]\(([^)]+)\)
Совпадает со ссылками [текст](url). Группа 1 — текст ссылки, группа 2 — URL.
Советы по работе с regex
Начинайте просто и стройте. Не пытайтесь написать идеальный паттерн за раз. Начните с простейшей работающей версии, потом добавляйте обработку крайних случаев.
Используйте тестер. Всегда тестируйте паттерны на реальных данных перед деплоем. Крайние случаи вас удивят.
Добавляйте комментарии. Большинство regex-движков поддерживают подробный режим, где можно добавлять комментарии и пробелы для читаемости.
Знайте, когда не использовать regex. Парсинг HTML, валидация сложных дат или обработка глубоко вложенных структур — для этого используйте настоящие парсеры.
Можно также использовать сравнение текстов, чтобы проверить, что ваши regex-замены дали правильный результат, или счётчик символов, чтобы проверить длину совпавших строк.
Regex — навык, который улучшается с практикой. Не нужно запоминать каждое правило синтаксиса — достаточно знать настолько, чтобы читать паттерны и модифицировать их под свои нужды. Держите эту шпаргалку под рукой, и вы проведёте меньше времени на Stack Overflow и больше времени за реальной разработкой.