input type = «email» позволяет test @ test, почему?

10

Я всегда исходил из предположения, что браузерное регулярное выражение электронной почты является более надежным, чем какой-либо шаблон регулярного выражения в JS / PHP.

Мой работодатель только что показал мне, что обе строки считаются правильными (наконец-то в FF28):

test@test.com // Expected to be true, is true
test@test     // Expected to be false, is true

Почему последнее верно? Это ошибка или что-то на будущее? Потому что, насколько я могу судить, неправильно использовать расширение (кроме, может быть, локальных хостов).

Кто-нибудь, кто может пролить свет на это?

Мартейн
источник
2
«кроме, может быть, localhosts» - и как браузер дифференцируется?
MrWhite
1
Кроме того, я считаю, что <input type="email" />это полезно только для мобильных веб-сайтов, поэтому большинство клавиатур будут отображаться с соответствующим дисплеем (с @клавишей и некоторыми .comсочетаниями клавиш).
RichouHunter
Я не знаю, я не собираю браузеры :) Это может быть умный трюк, или, может быть, какой-то параметр, к которому вы могли бы добавитьpattern
Martijn
6
Это совершенно правильный адрес, почему он будет отклонен?
Йорг Миттаг
1
потому что test@testэто действительный адрес электронной почты ... он рассматривается testкак tld. Так же, как test@comдействительный адрес электронной почты для comtld ... tools.ietf.org/html/rfc2822#section-3.4.1
SnakeDoc

Ответы:

20

Он действителен, поскольку testможет быть доменом верхнего уровня и localpart@top-level-domainдействительным адресом электронной почты.

Смотрите, например, адрес электронной почты, часть домена

Matteo
источник
И поскольку в ICANN теперь есть процесс, позволяющий кому-либо (достаточно большому) подать заявку на TLD по своему выбору, валидатор электронной почты больше не сможет отклонить его testкак TLD только потому, что он еще не зарегистрирован.
Стив Джессоп
1
@SteveJessop Кроме того, ОП не указал, говорит ли он о синтаксической достоверности (электронное письмо будет действительным, даже если оно не зарегистрировано), или он говорит о проверке, работает ли электронное письмо (и в этом случае потребуется гораздо больше) .. .
Matteo
Не проверяя, существует ли он, я был удивлен, что расширение домена не требуется. Это сделало бы проверку браузера намного менее полезной, так как кто-то должен был только напечатать asd @ ads, и это пройдет.
Мартейн
5
@Martijn: «Проверка браузера» - это проверка первой строки (которую легко обойти), поэтому она должна быть максимально широкой. Окончательная «строгая» проверка все еще должна быть в вашей логике на стороне сервера.
MrWhite
3

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

Ли Райан
источник
2

Также обратите внимание, что веб-браузеры не обязаны выполнять какие-либо проверки правильности. Старые браузеры не делают ничего особенного с адресом электронной почты. Новые браузеры могут проверять, но тип «электронная почта» наиболее полезен на мобильных устройствах, где пользователю может быть показана специализированная клавиатура.

Рон Люссье
источник