typ wejścia = „email” pozwala test @ test, dlaczego?

10

Zawsze zakładałem, że regex sprawdzania poprawności wiadomości e-mail w przeglądarce jest bardziej niezawodny niż niektóre wzorce wyrażeń regularnych w JS / PHP.

Mój pracodawca właśnie pokazał mi, że oba ciągi są uważane za prawidłowe (w końcu w FF28):

[email protected] // Expected to be true, is true
test@test     // Expected to be false, is true

Dlaczego to ostatnie jest prawdą? Czy to błąd, czy coś na przyszłość? Ponieważ, o ile mogę stwierdzić, nie jest poprawne nieużywanie rozszerzenia (oprócz lokalnych hostów).

Ktoś, kto może rzucić na to trochę światła?

Martijn
źródło
2
„oprócz lokalnych hostów” - a czym różni się przeglądarka?
MrWhite
1
Ponadto uważam, że <input type="email" />jest to przydatne tylko w przypadku witryn mobilnych, dlatego większość klawiatur będzie wyświetlana z odpowiednim wyświetlaczem (z @klawiszem i niektórymi .comskrótami…).
RichouHunter
Nie wiem, nie buduję przeglądarek :) To może być sprytna sztuczka, a może jakieś ustawienie, do którego możesz dodaćpattern
Martijn
6
To doskonale ważny adres, dlaczego miałby zostać odrzucony?
Jörg W Mittag
1
ponieważ test@testjest to prawidłowy adres e-mail ... traktuje się testjak tld. Tak jak test@comjest to prawidłowy adres e-mail dla comTLD ... tools.ietf.org/html/rfc2822#section-3.4.1
SnakeDoc

Odpowiedzi:

20

Jest prawidłowy, ponieważ testmoże być domeną najwyższego poziomu i localpart@top-level-domainjest prawidłowym adresem e-mail.

Zobacz na przykład adres e-mail, część domeny

Matteo
źródło
A ponieważ ICANN ma teraz procedurę dla każdego (wystarczająco dużego), aby ubiegać się o wybraną przez siebie TLD, tak naprawdę nie jest już możliwe odrzucenie walidatora e-mail testjako TLD tylko dlatego, że nie jest jeszcze zarejestrowane.
Steve Jessop
1
@SteveJessop Ponadto OP nie określił, czy mówi o poprawności składniowej (e-mail byłby ważny, nawet jeśli nie został zarejestrowany), czy też mówił o sprawdzeniu, czy e-mail działa (iw tym przypadku byłoby znacznie więcej). .
Matteo
Nie sprawdzając, czy istnieje, byłem zaskoczony, że rozszerzenie domeny nie jest wymagane. Sprawiłoby to, że walidacja przeglądarki byłaby znacznie mniej przydatna, ponieważ ktoś musiałby tylko wpisać asd @ ads i przejdzie.
Martijn
5
@Martijn: „Sprawdzanie poprawności przeglądarki” to tylko sprawdzanie poprawności pierwszego wiersza (które można łatwo ominąć), więc musi to być jak najszerszy sprawdzian. Ostateczna „ścisła” weryfikacja nadal musi odbywać się w logice po stronie serwera.
MrWhite
3

Możesz edytować plik hosts lub uruchomić serwer DNS w sieci lokalnej, aby utworzyć komputer z nazwą domeny najwyższego poziomu. Adres e-mail będzie dostępny tylko wtedy, gdy jest kierowany tylko w tej sieci lokalnej, ale jest to możliwa konfiguracja.

Lie Ryan
źródło
2

Należy również pamiętać, że przeglądarki internetowe nie są wymagane do przeprowadzania kontroli sprawdzania poprawności. Starsze przeglądarki nie robią nic specjalnego z adresem e-mail. Nowsze przeglądarki mogą sprawdzać poprawność, ale typ „e-mail” jest najbardziej przydatny na urządzeniach mobilnych, na których użytkownikowi może zostać wyświetlona specjalistyczna klawiatura.

Ron Lussier
źródło