type 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
"крім, можливо, локальних хостів" - і як браузер відрізняється?
MrWhite

1
Крім того, я вважаю, що <input type="email" />це корисно лише для мобільних веб-сайтів, так що більшість клавіатур відображатиметься з відповідним дисплеєм (з @клавішею та деякими .comкомбінаціями клавіш…).
RichouHunter

Я не знаю, я не будую браузери :) Це може бути розумним трюком, або, можливо, якийсь параметр, який ви могли б додатиpattern
Martijn

6
Це абсолютно коректна адреса, чому її відхилять?
Йорг W Міттаг

1
тому що test@testце дійсна адреса електронної пошти ... вона трактується testяк tld. Так само, як test@comі дійсна адреса електронної пошти для comtld ... tools.ietf.org/html/rfc2822#section-3.4.1
SnakeDoc

Відповіді:


20

Він дійсний, оскільки testможе бути доменом верхнього рівня і localpart@top-level-domainє дійсною адресою електронної пошти.

Див. Наприклад електронну адресу, частину домену


А оскільки ICANN тепер має можливість для кожного (достатньо великого) подати заявку на TLD за власним вибором, дійсно неможливо більше, щоб валідатор електронної пошти відхилив testяк TLD лише тому, що він ще не зареєстрований.
Стів Джессоп

1
@SteveJessop Окрім того, ОП не вказав, чи йдеться про синтаксичну дійсність (електронний лист буде дійсним, навіть якщо він не зареєстрований) або якщо він говорить про перевірку, чи працює електронна пошта (і в цьому випадку знадобиться набагато більше). .
Маттео

Не перевіряючи, чи існує, я був здивований, що розширення домену не потрібно. Це зробить перевірку браузера набагато менш корисною, оскільки хтось повинен лише набрати asd @ ads, і це пройде.
Мартійн

5
@Martijn: "Перевірка браузера" - це лише перевірка перевірки першого рядка (яку легко обійти), тому вона повинна бути якомога ширшою. Остаточне "суворе" підтвердження все ще повинно бути в логіці вашого сервера.
MrWhite

3

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


2

Зауважте також, що веб-браузерам не потрібно проводити перевірки перевірки. Старі браузери не роблять нічого особливого з адресою електронної пошти. Нові веб-переглядачі можуть перевіряти, але тип "електронної пошти" є найбільш корисним на мобільних пристроях, де користувачеві може бути показана спеціалізована клавіатура.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.