input type = "email" permite test @ test, por quê?

10

Sempre estive sob a suposição de que o navegador email-validation-regex é mais robusto do que algum padrão regex em JS / PHP.

Meu empregador acabou de me mostrar que as duas cadeias são consideradas corretas (finalmente no FF28):

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

Por que o último é verdadeiro? Isso é um bug ou algo para o futuro? Porque, até onde eu sei, não é correto não usar uma extensão (além de talvez localhosts).

Alguém que possa lançar alguma luz sobre isso?

Martijn
fonte
2
"além de talvez localhosts" - e como o navegador se diferencia?
MrWhite
11
Além disso, considero que isso <input type="email" />é útil apenas para sites para celular, para que a maioria dos teclados apareça com uma exibição apropriada (com a @tecla e alguns .comatalhos ...).
RichouHunter
Eu não sei, eu não construo navegadores :) Pode ser um truque inteligente, ou talvez uma configuração que você possa adicionar #pattern
Martijn
6
Esse é um endereço perfeitamente válido, por que ele seria rejeitado?
Jörg W Mittag
11
porque test@testé um endereço de e-mail válido ... trata testcomo um tld. Assim como test@comé um endereço de email válido para o comTLD ... tools.ietf.org/html/rfc2822#section-3.4.1
SnakeDoc

Respostas:

20

É válido porque testpode ser um domínio de nível superior e localpart@top-level-domainé um endereço de email válido.

Veja, por exemplo , Endereço de email, parte do domínio

Matteo
fonte
E como a ICANN agora tem um processo para qualquer pessoa (grande o suficiente) solicitar o TLD de sua escolha, não é mais possível que um validador de e-mail rejeite testcomo TLD apenas porque ainda não está registrado.
Steve Jessop
11
@SteveJessop Além disso, o OP não especificou se ele está falando em validade sintática (o e-mail seria válido mesmo se não estiver registrado) ou se ele está falando em verificar se o e-mail funciona (e, neste caso, seria necessário muito mais) .. .
Matteo
Não verificando se existe, fiquei surpreso com a extensão do domínio não ser necessária. Isso tornaria a validação do navegador muito menos útil, pois alguém só precisa digitar asd @ ads e será aprovado.
28714 Martijn
5
@ Martijn: A "validação do navegador" é apenas uma verificação de validação de primeira linha (que é facilmente ignorada), por isso precisa ser a verificação mais ampla possível. A validação "estrita" final ainda precisa estar na sua lógica do lado do servidor.
MrWhite
3

Você pode editar o arquivo hosts ou executar um servidor DNS em uma rede local para criar uma máquina com um nome de domínio de nível superior. O endereço de e-mail estará acessível apenas se for roteado somente dentro da rede local, mas é uma configuração possível.

Lie Ryan
fonte
2

Observe também que os navegadores da web não são necessários para executar nenhuma verificação de validação. Navegadores mais antigos não fazem nada de especial com o endereço de email. Navegadores mais recentes podem ser validados, mas o tipo 'email' é mais útil em dispositivos móveis nos quais um teclado especializado pode ser mostrado ao usuário.

Ron Lussier
fonte