ToolHub
View All Posts

Основные шаблоны регулярных выражений для веб-разработчиков

Регулярные выражения — один из самых ценных навыков в арсенале веб-разработчика. Они позволяют обрабатывать валидацию форм, санитизацию данных, парсинг URL и манипуляции с текстом в одной строке кода, которая в противном случае потребовала бы десятков строк императивной логики. Это руководство собирает наиболее важные шаблоны regex, которые вам понадобятся в повседневной веб-разработке, с готовыми к использованию примерами на JavaScript, Python и PHP.

Шаблоны валидации

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

ШаблонПримерШаблон
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/user@example.com/^https?:\/\/[\w.-]+(:\d+)?(\/[\w./-]*)?$/
https://example.com/^(\+\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4}$/+1 (555) 123-4567
/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$/MyP@ssw0rd/^\d{5}(-\d{4})?$/
12345, 12345-6789/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/gИзвлечение всех email-адресов из текста
<>"']+/gИзвлечение всех URL из текста/-?\d+\.?\d*/g
Извлечение всех чисел (целых и десятичных)<[^>]+>/gИзвлечение всех HTML-тегов
<[^>]+>/gУдаление всех HTML-тегов, оставляя только текст/\s+/g
Замена множественных пробелов на один/(\d{4})-(\d{2})-(\d{2})/Замена YYYY-MM-DD на MM/DD/YYYY
Протокол^(https?)Домен
://([\w.-]+)Порт:(\d+)
Путь([\w./-]*)Параметры запроса
[?&]([^=]+)=([^&]*)Якорь (хэш)#(.*)$

Шаблоны извлечения

Валидация email

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Извлечение данных из неструктурированного текста — это то, в чём regex превосходит всё. Эти шаблоны помогают извлекать email, URL, числа и другие структурированные данные из свободного текста.

Парсинг URL — обычная задача в веб-разработке, и regex предоставляет элегантный способ разбора URL на компоненты.

Последовательное форматирование данных улучшает пользовательский опыт и целостность данных. Regex отлично справляется с преобразованием необработанных данных в отформатированные строки.

Важное предупреждение: никогда не полагайтесь только на валидацию на стороне клиента. Regex на клиенте обеспечивает немедленную обратную связь для пользователя, но не обеспечивает безопасность. Всегда повторно валидируйте все входные данные на сервере, поскольку злоумышленники могут обойти JavaScript-валидацию, отправляя запросы напрямую в ваш API.

Шаблоны поиска и замены

Валидация URL

^https?:\/\/(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$

Очистка пользовательских данных необходима для безопасности и целостности данных. Эти шаблоны удаляют или заменяют нежелательные символы.

Разные языки программирования имеют разные движки regex с разными возможностями. Вот ключевые различия:

Плохо написанный regex может привести к катастрофическому обратному отслеживанию, когда движку требуется экспоненциальное время для оценки определённых входных данных. Это может привести к зависанию или сбою приложения. Вот как этого избежать:

Шаблоны парсинга URL

Валидация номера телефона

^\+?[1-9]\d{1,14}$

Нужно протестировать или отладить шаблон regex? Попробуйте наш бесплатный онлайн-тестер регулярных выражений.

Для базовой валидации email в веб-формах используйте: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/. Это охватывает большинство практических случаев использования, но помните, что regex не может идеально валидировать все email-адреса в соответствии со спецификацией RFC 5322. Для критически важной валидации отправьте письмо для подтверждения.

<><>"'.,;:!?])/g. Это сопоставляет URL, начинающиеся с http:// или https://, и продолжается до тех пор, пока не встретит пробельный символ или общий знак препинания. Для более строгого сопоставления добавьте валидацию структуры URL.

Шаблоны форматирования

Валидация пароля

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

Медлительность regex обычно вызвана катастрофическим обратным отслеживанием — когда движок пробует экспоненциально много способов сопоставления шаблона. Это происходит с вложенными жадными квантификаторами, такими как (a+)+b. Чтобы исправить: упростите шаблон, используйте ленивые квантификаторы, когда это возможно, и избегайте вложенных повторений, которые могут сопоставлять пустые строки.

Regex, как правило, не подходит для парсинга произвольного HTML из-за нерегулярной природы вложенных тегов. Для простых задач, таких как удаление тегов или извлечение атрибутов, regex работает нормально. Для сложного парсинга HTML используйте специализированный парсер, такой как BeautifulSoup (Python) или Cheerio (JavaScript).

Для простой валидации regex быстр и эффективен. Для более сложной валидации (например, проверки диапазонов дат, контрольных сумм), комбинируйте regex с программной логикой. Regex проверяет формат; код проверяет семантику. Используйте соответствующий инструмент для каждой задачи.

Шаблоны очистки данных

Валидация почтового индекса

^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$

25[0-5]2[0-4]\d[01]?\d\d?). This is repeated three times with dots, then once more for the final octet.

Matches: 192.168.1.1, 10.0.0.1, 255.255.255.0

Does not match: 256.1.1.1, 192.168.1, 192.168.1.1.1

Шаблоны для конкретных языков

Извлечение email из текста

^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$

This pattern validates dates in ISO 8601 format (YYYY-MM-DD). It checks for a four-digit year, a month between 01-12, and a day between 01-31. Note that this pattern validates the format but not the logical validity of the date (for example, it allows 2026-02-31). For complete validation, parse the date and check it programmatically.

Matches: 2026-05-20, 2025-01-01, 2024-12-31

Does not match: 2026-5-20, 2026-13-01, 26-05-20

Производительность regex

Извлечение URL из текста

^#(?:[0-9a-fA-F]{3}){1,2}$

#fff#ffffff{1,2} quantifier allows either one or two repetitions of the 3-hex-digit group, supporting both formats.

Matches: #fff, #FF5733, #1e293b

Does not match: fff, #ff, #1234567

Часто задаваемые вопросы

Извлечение чисел

^[a-z0-9]+(?:-[a-z0-9]+)*$

This pattern validates URL slugs: lowercase alphanumeric strings with hyphens as separators. It ensures no leading or trailing hyphens and no consecutive hyphens. This format is SEO-friendly and safe for use in URLs, file names, and identifiers.

Matches: my-blog-post, regex-patterns-guide, tool123

Does not match: My-Post, -slug, slug-, my--post

9. Credit Card Number

Извлечение HTML-тегов

^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$

This pattern validates major credit card numbers: Visa (starts with 4, 13 or 16 digits), Mastercard (starts with 51-55, 16 digits), American Express (starts with 34 or 37, 15 digits), and Discover (starts with 6011 or 65, 16 digits). Combine this with the Luhn algorithm for complete validation.

10. HTML Tag Matching

Удаление HTML-тегов

<([a-z][a-z0-9]*)\b[^>]*>(.*?)<\/\1>

([a-z][a-z0-9]*)\1(.*?) captures the content between tags using lazy matching to get the shortest match.

Tips for Writing Better Regex

Want to test these regex patterns interactively? Try our free Regex Tester with real-time matching, capture group visualization, and pattern explanations.

Тестер регулярных выражений

Frequently Asked Questions

Нормализация пробельных символов

A regex (regular expression) pattern is a sequence of characters that defines a search pattern. It is used for string matching, validation, search and replace operations, and text parsing. Regex patterns use special metacharacters like ., *, +, ?, [], (), and {} to define flexible matching rules.

Замена дат

Use regex for basic email format validation (checking for @ symbol, domain structure), but do not try to fully validate email addresses with regex alone. The email specification (RFC 5322) is extremely complex, and no regex can perfectly validate all valid addresses. For production use, combine basic regex validation with actual email verification (sending a confirmation link).

Анализ компонентов URL

Greedy quantifiers (*, +) match as much text as possible, while lazy quantifiers (*?, +?) match as little text as possible. For example, applied to 'aabb', the greedy pattern a.*b matches 'aabb' (the entire string), while the lazy pattern a.*?b matches only 'aab' (the shortest match).

Извлечение параметров запроса

Use online regex testers like the ToolHub Regex Tester to interactively test patterns against sample text. These tools highlight matches in real-time, show capture groups, and explain what each part of the pattern does.

Форматирование номера телефона

Most regex syntax is shared across languages, but there are differences in advanced features. JavaScript does not support lookbehind assertions in older engines, Python uses different syntax for named groups than JavaScript, and PCRE (PHP) supports more features than most other engines. Always test patterns in your target language.