Я пишу очень простой макет, чтобы продемонстрировать некоторую проверку формы HTML5. Однако я заметил, что проверка электронной почты не проверяет наличие точки в адресе и не проверяет наличие символов, следующих за указанной точкой.
Другими словами, «john @ doe» считается действительным, если это явно недействительный адрес электронной почты; "лань" - это не домен.
Вот как я кодирую свое поле электронной почты:
<input type="email" required />
Этого мало?
Посмотрите на эту скрипку, чтобы понять, что я имею в виду.
Примечание: я знаю, как сделать это с помощью шаблона RegEx. Мне просто интересно, как кому-то могло сойти с рук использование электронного письма.
html
email-validation
WEFX
источник
источник
In other words, "john@doe" is considered valid, when it's clearly not a valid email address; doe isn't a domain.
Да,doe
определенно может быть домен (подумайтеlocalhost
), и этот адрес технически действителен согласно спецификации.localhost
адресами нет.Ответы:
Поскольку a @ b - действительный адрес электронной почты (например, localhost - действительный домен). См. Http://en.wikipedia.org/wiki/Email_address#Examples.
Кроме того, имейте в виду, что вы всегда должны выполнять проверку ввода на сервере. Проверка на стороне клиента должна использоваться только для обратной связи с пользователем, и на нее нельзя полагаться, поскольку ее можно легко обойти.
источник
au@ua
Теоретически вы можете иметь адрес без "." в.
Поскольку технически такие вещи, как:
Все действительные электронные письма.
Таким образом, стандартная проверка HTML5 позволяет использовать все действительные электронные письма, включая необычные.
Для некоторых легко читаемых объяснений (вместо чтения стандартов): http://en.wikipedia.org/wiki/Email_address#Examples
источник
uz
, который напрямую указывает на IP-адрес по состоянию на октябрь 2018 года. Если вы сделаетеnslookup uz
, он указывает на91.212.89.8
, значит, в этом домене должна быть возможность иметь электронную почту.Попробуйте добавить это к вводу
Скрипка
источник
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$
RFC 822 , глава 6, дает спецификацию адреса в дополненной Backus-Наура (BNF):
Используя эту спецификацию
a@b
является действительным адресом.ОБНОВИТЬ
Чтобы ответить на комментарий Trejkaz, я добавляю следующие определения. Мы видим, что SPACE разрешены, но только в кавычках.
источник
На этой странице MDN показано, какие регулярные выражения браузеры должны использовать для проверки электронной почты:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#Validation
Вы можете немного изменить это регулярное выражение, чтобы в доменном имени требовалась хотя бы одна точка: измените звездочку
*
в конце регулярного выражения на плюс+
. Затем используйте это регулярное выражение в качествеpattern
атрибута:источник
Вы можете настроить шаблон поля электронной почты:
источник
Вот как вы можете сделать это с html5, используя шаблон регулярного выражения. Вы также можете добавить собственное сообщение для отображения.
источник
Этот паттерн всегда работает у меня.
Текст должен быть в нижнем регистре,
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
но я думаю, что он охватывает более или менее большинство писем.источник