Estou escrevendo um mock-up muito simples para demonstrar alguma validação de formulário HTML5. No entanto, notei que a validação do e-mail não verifica se há um ponto no endereço, nem verifica os caracteres após o ponto.
Em outras palavras, "john @ doe" é considerado válido quando claramente não é um endereço de e-mail válido; "doe" não é um domínio.
É assim que estou codificando meu campo de e-mail:
<input type="email" required />
Isso não é o suficiente?
Verifique este violino para ver o que quero dizer.
Observação: eu sei como fazer isso por meio de um padrão RegEx. Só estou me perguntando como alguém poderia se safar usando o tipo de e-mail.
html
email-validation
WEFX
fonte
fonte
In other words, "john@doe" is considered valid, when it's clearly not a valid email address; doe isn't a domain.
Sim,doe
definitivamente pode ser um domínio (penselocalhost
) e esse endereço é tecnicamente válido de acordo com as especificações.localhost
endereços.Respostas:
Porque a @ b é um endereço de e-mail válido (por exemplo, localhost é um domínio válido). Consulte http://en.wikipedia.org/wiki/Email_address#Examples
Além disso, lembre-se de que você deve sempre fazer a validação da entrada no servidor. A validação do lado do cliente deve ser apenas para fornecer feedback ao usuário e não ser confiável, uma vez que pode ser facilmente contornada.
fonte
au@ua
Você pode teoricamente ter um endereço sem um "." no.
Já que tecnicamente coisas como:
Todos são emails válidos.
Portanto, a validação HTML5 padrão permite todos os e-mails válidos, incluindo os incomuns.
Para obter algumas explicações fáceis de ler (em vez de ler os padrões): http://en.wikipedia.org/wiki/Email_address#Examples
fonte
uz
, que aponta diretamente para um IP a partir de outubro de 2018. Se você fizer umnslookup uz
, ele aponta para91.212.89.8
, então deve ser possível ter e-mail neste domínio também.Tente adicionar isso à entrada
Violino
fonte
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$
O RFC 822 , capítulo 6, fornece a especificação de um endereço na forma aumentada de Backus-Naur (BNF):
Usar esta especificação
a@b
é um endereço válido.ATUALIZAR
Para responder ao comentário de Trejkaz, adiciono as seguintes definições. Vemos que SPACE são permitidos, mas apenas em strings entre aspas.
fonte
Nesta página MDN, mostra os navegadores regex que devem usar para validar o e-mail:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#Validation
Você pode alterar ligeiramente esta regex para exigir pelo menos um ponto no nome de domínio: mude a estrela
*
no final da regex para um sinal de mais+
. Em seguida, use essa regex como opattern
atributo:fonte
Você pode personalizar o padrão do campo de e-mail:
fonte
Aqui está como você pode fazer isso com html5 usando o padrão regex. Você também pode incluir uma mensagem personalizada para exibição.
fonte
Esse padrão sempre funciona para mim.
O texto deve estar em minúsculas,
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
mas acho que cobre mais ou menos a maioria dos e-mails.fonte