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?

Author: Community, 2009-04-13

5 answers

^\S+@\S+$
 77
Author: chaos, 2011-05-25 03:59:32
É possível escrever uma expressão regular que só aceita endereços de E-mail que seguem os padrões. No entanto, existem alguns endereços de E-mail lá fora que não seguem estritamente os padrões, mas ainda funcionam.

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]+$
 192
Author: Guffa, 2017-04-07 21:50:05

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].
 3
Author: Carl Howarth, 2017-06-22 12:34:32

Escolhe.

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. :)
 2
Author: JP Alioto, 2009-04-12 23:40:18

^[a-zA-Z0-9_.+- ] +@[a-zA-Z0-9 -]+.[a-zA-Z0-9 -.]+$

  • apenas 1 @
  • vários domínios e subdomínios
 1
Author: coto, 2016-03-21 21:51:02