Imagino que isso não deveria ocorrer, por exemplo:
douglas.@gmail.com.br é aceito.
Imagino que isso não deveria ocorrer, por exemplo:
douglas.@gmail.com.br é aceito.
Douglas, você tem razão!
Repare que na lista de emails que não podem ser reconhecidos, nenhum é semelhante ao seu exemplo. Então tecnicamente, a resposta do instrutor está correta!
Validação de email é uma das expressões mais complexas que vemos por aí, especialmente porque a cada dia vemos novos caracteres sendo permitidos em servidores novos. Porém, vamos incluir o seu caso no grupo de emails recusados e refazer a regex:
//Expressão original:
^([\w-]\.?)+@([\w-]+\.)+([A-Za-z]{2,4})+$
Quebrando em partes:
//Endereço:
([\w-]\.?)+
//Domínio:
([\w-]+\.)+([A-Za-z]{2,4})+
Como não precisamos mexer na expressão de domínio, vamos deixá-la para lá por hora.
[\w-]
e em seguida pode ter um .
..
, pois antes de qualquer .
deve haver ao menos um caractere em [\w-]
..
, pois ele é a parte final opcional da regex.Para começar, vamos definir a regra por extenso.. Isso sempre ajuda a separar os grupos e escrever a regex por partes. Um email deve:
\w
representa o conjunto [a-zA-Z0-9_]
, então [\w-]
soma isso ao hifen: [a-zA-Z0-9_-]
. Então vamos começar com [a-zA-Z]+
.[a-zA-Z]+
[.-]?
[a-zA-Z]+[.-]?
[a-zA-Z0-9]
[a-zA-Z]+[.-]?[a-zA-Z0-9]
([.-]?[a-zA-Z0-9])*
[a-zA-Z]+([.-]?[a-zA-Z0-9])*
^[a-zA-Z]+([.-]?[a-zA-Z0-9])*@([\w-]+\.)+([A-Za-z]{2,4})+$
Vamos validar? Entre na minha regex salva no regex101 e dê uma olhada!
Se precisar de qualquer explicação mais completa, pode dar uma chamada!
Um abraço e bons estudos