Проверка email в HTML5 без точки: особенности и решения
Быстрый ответ
Валидация форм в HTML5, включая использование атрибута type="email"
, разрешает некоторую неоднозначность и может принимать адреса в формате user@localhost
. Для более жесткой проверки можно применить регулярное выражение в атрибуте pattern
, пример которого приведен ниже:
<input type="email" pattern=".+@.+\..+" title="Не забывайте вставлять точку в доменной части адреса электронной почты, иначе это вызовет ошибки." />
Такой подход предотвратит прием адресов электронной почты без точки в доменной части, обеспечивая соответствие общепринятому формату и повышая точность валидации.
Странности форматов email-адресов
Существует множество форматов электронных адресов, которые считаются правильными, даже те, что могут удивить. В соответствии с RFC 822, адреса без точки, например user@localhost
, являются технически верными, особенно в рамках закрытых сетей.
Повышение точности валидации с помощью pattern
Чтобы улучшить валидацию формы, можно использовать атрибут pattern
вместе с type="email"
. Чтобы исключить прием адресов без точки в домене, используйте регулярное выражение .+\..{2,}
. Это условие требует наличия доменного расширения, состоящего минимум из двух букв:
<input type="email" pattern=".+\..{2,}" title="Требуется доменное расширение адреса, например, .com или .org." />
Таким образом, что-то простое, как a@b
, не пройдет проверку.
Визуализация
Проверка формата электронной почты в HTML5 может быть визуализирована в виде диалога с барменом в клубе:
🚪👮♂️: "Пожалуйста, предъявите ваш email."
🆔: "[email protected]ail.ru"
Бармен проверяет наличие символа "@":
Есть "@" в адресе?
- Есть! 💯
- А нужна ли точка после "@"?
- Нет, это не является обязательным! 🚫🔴
То есть, HTML5 не требует наличие точки в адресе после символа @.
Регулярные выражения и их нюансы
Строгое использование валидации с помощью регулярных выражений может быть полезным, но важно не исключать легитимные адреса из-за слишком жесткого подхода. Так как не все адреса следуют стандартному формату user@example.com
и могут включать элементы, такие как кавычки и комментарии, создание регулярных выражений может быть сложной задачей.
Валидация на стороне сервера: дополнительная степень защиты
Помимо использования регулярных выражений для валидации на стороне клиента, валидация на стороне сервера предоставляет дополнительную гарантию. Клиентская проверка может пропустить некоторые проблемы, например, адрес a@b
, который окажется недействительным при реальной отправке почты, подчеркивая важность проверки на стороне сервера.
Уточнение требований с помощью title
С помощью атрибута title
можно указать пользователю ожидаемый формат вводимых данных. Всплывающая подсказка с примером правильного формата отобразится, когда курсор находится над полем ввода или при попытке отправить неправильно заполненную форму.
Обязательная и желательная валидация
Использование атрибута required
важно для обязательности предоставления информации в поле формы, тогда как pattern
добавляет дополнительный уровень проверки до отправки формы на сервер.
Тестирование процесса валидации
Не забывайте тестировать регулярные выражения для адресов, используя различные источники, включая Википедию и примеры с сайта MDN. Убедитесь, что логика валидации отвечает вашим требованиям, и при необходимости включите более сложные правила валидации через JavaScript.
Полезные материалы
- Клиентская валидация форм – Узнайте веб-разработку | MDN — Основная информация о валидации форм HTML5.
- HTML Стандарт — Официальная спецификация для
type="email"
в HTML формах. - Сводка по валидации Email – Почти идеальное регулярное выражение для Email — Ценная информация о использовании регулярных выражений для валидации email в HTML5.
- Валидация форм HTML5 — SitePoint — Практическое руководство по встроенной валидации форм в HTML5.
- 15489 – формы: валидация <input type="email"> должна быть обновлена для EAI — Обсуждение о валидации форм с учетом точек в типе ввода email в HTML5.
- RFC 5321 – Простой протокол передачи почты — Ключевой документ, описывающий приемлемые форматы электронной почты.
- Могу ли я использовать... Таблицы поддержки для HTML5, CSS3 и т.д. — Информация о поддержке браузерами различных функций валидации форм HTML5.