Основные шаблоны регулярных выражений для веб-разработчиков
Регулярные выражения — один из самых ценных навыков в арсенале веб-разработчика. Они позволяют обрабатывать валидацию форм, санитизацию данных, парсинг 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
Извлечение данных из неструктурированного текста — это то, в чём regex превосходит всё. Эти шаблоны помогают извлекать email, URL, числа и другие структурированные данные из свободного текста.
Парсинг URL — обычная задача в веб-разработке, и regex предоставляет элегантный способ разбора URL на компоненты.
Последовательное форматирование данных улучшает пользовательский опыт и целостность данных. Regex отлично справляется с преобразованием необработанных данных в отформатированные строки.
Шаблоны поиска и замены
Валидация URL
Очистка пользовательских данных необходима для безопасности и целостности данных. Эти шаблоны удаляют или заменяют нежелательные символы.
Разные языки программирования имеют разные движки regex с разными возможностями. Вот ключевые различия:
Плохо написанный regex может привести к катастрофическому обратному отслеживанию, когда движку требуется экспоненциальное время для оценки определённых входных данных. Это может привести к зависанию или сбою приложения. Вот как этого избежать:
Шаблоны парсинга URL
Валидация номера телефона
Нужно протестировать или отладить шаблон regex? Попробуйте наш бесплатный онлайн-тестер регулярных выражений.
Для базовой валидации email в веб-формах используйте: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/. Это охватывает большинство практических случаев использования, но помните, что regex не может идеально валидировать все email-адреса в соответствии со спецификацией RFC 5322. Для критически важной валидации отправьте письмо для подтверждения.
<><>"'.,;:!?])/g. Это сопоставляет URL, начинающиеся с http:// или https://, и продолжается до тех пор, пока не встретит пробельный символ или общий знак препинания. Для более строгого сопоставления добавьте валидацию структуры URL.
Шаблоны форматирования
Валидация пароля
Медлительность regex обычно вызвана катастрофическим обратным отслеживанием — когда движок пробует экспоненциально много способов сопоставления шаблона. Это происходит с вложенными жадными квантификаторами, такими как (a+)+b. Чтобы исправить: упростите шаблон, используйте ленивые квантификаторы, когда это возможно, и избегайте вложенных повторений, которые могут сопоставлять пустые строки.
Regex, как правило, не подходит для парсинга произвольного HTML из-за нерегулярной природы вложенных тегов. Для простых задач, таких как удаление тегов или извлечение атрибутов, regex работает нормально. Для сложного парсинга HTML используйте специализированный парсер, такой как BeautifulSoup (Python) или Cheerio (JavaScript).
Для простой валидации regex быстр и эффективен. Для более сложной валидации (например, проверки диапазонов дат, контрольных сумм), комбинируйте regex с программной логикой. Regex проверяет формат; код проверяет семантику. Используйте соответствующий инструмент для каждой задачи.
Шаблоны очистки данных
Валидация почтового индекса
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 из текста
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 из текста
#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
Часто задаваемые вопросы
Извлечение чисел
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-тегов
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]*)\1(.*?) captures the content between
tags using lazy matching to get the shortest match.
Tips for Writing Better Regex
- Валидация на стороне клиента: используйте regex для мгновенной обратной связи в браузере. Проверяйте формат на лету, когда пользователи вводят данные.
- Валидация на стороне сервера: всегда повторно валидируйте на сервере. Клиентскую валидацию можно обойти, отключив JavaScript.
- Используйте HTML5-валидацию: используйте встроенную валидацию браузера с атрибутами input type="email", type="url", pattern="..." для базовой проверки.
- Показывайте чёткие сообщения об ошибках: сообщайте пользователям, что не так, а не только то, что ввод невалиден. Например, «Пожалуйста, введите действительный email-адрес» вместо «Невалидный ввод».
- Не блокируйте валидные данные: убедитесь, что ваш regex не отклоняет действительные email-адреса с символами Unicode, субдоменами или необычными (но валидными) форматами.
- Избегайте вложенных повторений: никогда не вкладывайте один квантификатор в другой, если внутренний может сопоставлять пустую строку. Например, (a*)* может сопоставлять пустую строку бесконечным числом способов.
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.