Практические советы и ловушки при проверке ввода — email, телефона, почтового индекса — регулярными выражениями.
При валидации форм регулярные выражения хорошо подходят для ввода с регулярным форматом. Чтобы проверить, что вся строка соответствует формату, нужно зафиксировать оба конца с помощью ^ и $. Без якорей строка проходит проверку, даже если совпадает лишь её часть, и проверка оказывается уязвимой. То же регулярное выражение можно как есть использовать в HTML-атрибуте input pattern.
Для значений с фиксированным числом знаков и типом символов — телефон, почтовый индекс, логин — достаточно классов символов и квантификаторов. Однако если правило слишком сузить, оно заблокирует допустимые варианты: международные номера, новые схемы почтовых индексов, наличие или отсутствие дефисов. Сначала изучите разнообразие реальных данных.
Не пытайтесь идеально проверить email регулярным выражением. Официальная спецификация (RFC 5322) слишком сложна, чтобы воспроизвести её практичным регулярным выражением. Проверьте лишь нестрого — например, наличие @ и точки, — а настоящую действительность подтверждайте отправкой письма для подтверждения; это классический подход.
Проверка регулярным выражением в браузере нужна лишь для удобства пользователя (UX), а не как последний рубеж защиты. Обязательно проверяйте повторно на сервере и остерегайтесь катастрофического бэктрекинга (ReDoS) при недоверенном вводе (см. статью о производительности в материалах).