Qual é a expressão regular mais simples para validar e-mails para não os aceitar cegamente?
Quando os utilizadores criam uma conta no meu site, quero fazer a validação do servidor para que os e-mails não aceitem cada entrada.
Vou enviar uma confirmação, de uma forma a fazer uma Validação de aperto de mão.
Estou à procura de algo simples, não o melhor, mas não tão simples que não valide nada. Eu não sei onde a limitação deve ser, uma vez que qualquer expressão regular não fará a validação correta porque não é possível fazê-lo com jargao.
Estou a tentar limitar o sintax e a complexidade visual inerentes às expressões regulares, porque neste caso qualquer será correcto.que regexp posso usar para fazer isso?
5 answers
^\S+@\S+$
Aqui estão algumas expressões regulares simples para validação básica:
Contém um @ carácter:
@
Contém @ e um período algures depois dele:
@.*?\.
Tem pelo menos um carácter antes do@, antes do período E depois it:
.+@.+\..+
Tem apenas um@, pelo menos um carácter antes do@, antes do período e depois dele:
^[^@]+@[^@]+\.[^@]+$
O Utilizador AmoebaMan17 sugere esta modificação para eliminar espaços em branco:
^[^@\s]+@[^@\s]+\.[^@\s]+$
Eu acho que este pequeno ajuste à expressão de AmoebaMan17 deve parar o endereço de começar/terminar com um ponto e também parar vários pontos ao lado um do outro. Tentar não voltar a torná-lo complexo, eliminando simultaneamente uma questão comum.
(?!.*\.\.)(^[^\.][^@\s]+@[^@\s]+\.[^@\s\.]+$)
Parece estar a funcionar (mas eu não sou nenhum RegEx-pert). Corrige o meu problema com os utilizadores copiar e colar endereços de E-mail a partir do fim das frases que terminam com um período.
Ou seja, aqui está o meu novo endereço de E-mail. [email protected].Aqui está o que está em conformidade com RFC 2822 secção 3.4.1...
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Só para o caso de estares curioso. :)
^[a-zA-Z0-9_.+- ] +@[a-zA-Z0-9 -]+.[a-zA-Z0-9 -.]+$
- apenas 1 @
- vários domínios e subdomínios