Em primeiro lugar, eu sei que usar regex para e-mail não é recomendado, mas tenho que testar isso.
Eu tenho este regex:
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
Em Java, eu fiz isso:
Pattern p = Pattern.compile("\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b");
Matcher m = p.matcher("[email protected]");
if (m.find())
System.out.println("Correct!");
No entanto, a regex falha independentemente de o e-mail ser bem-formado ou não. Um "localizar e substituir" dentro do Eclipse funciona bem com o mesmo regex.
Qualquer ideia?
Obrigado,
Respostas:
FWIW, aqui está o código Java que usamos para validar endereços de e-mail. Os Regexp são muito semelhantes:
Funciona de forma bastante confiável.
fonte
Aqui está o regex compatível com RFC822 adaptado para Java:
Resultado:
O regex foi retirado deste post: Mail :: RFC822 :: Address: validação de endereço baseado em regexp . Os resultados devem coincidir com a versão online .
fonte
email@email
como um eNão.Você nunca terminará com uma expressão válida.
Por exemplo, estes são todos os endereços de e-mail válidos:
Apenas para mencionar alguns problemas:
Antes mesmo de começar, verifique os RFCs correspondentes
fonte
Isso é porque você está esquecendo a não diferenciação de maiúsculas e minúsculas:
Isso corresponde ao seu exemplo, embora ignore muitos e-mails válidos.
fonte
Outra alternativa simples para validar 99% dos e-mails
fonte
Este é um regex válido para validar e-mails. É totalmente compatível com RFC822 e aceita endereços IP e nomes de servidores (para fins de intranet).
Aqui estão alguns exemplos de saída, quando você chama
isEmailValid(emailVariable)
:fonte
Maching está definido como CASE_INSENSITIVE ?
fonte
Você pode usar este método para validar o endereço de e-mail em java.
fonte
Formato de e-mail geral (RE) que inclui também domínios como co.in, co.uk, com, outlook.com etc.
E a regra diz que:
(ponto, ponto final, ponto final) desde que não seja o primeiro nem o último caractere, e desde que também não apareça duas ou mais vezes consecutivas.
fonte
Modificação da resposta de Armer B. que não validou e-mails terminados em '.co.uk'
fonte
Regex:
^[\\w!#$%&’*+/=?
{|} ~ ^ -] + (?: \. [\ W! # $% & '* + / =?{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$
fonte
Se você quiser permitir caracteres não latinos, este funciona muito bem para mim.
Não permite IPs após @, mas a maioria dos e-mails válidos em de de
[email protected]
podem ser validados com ele.\p{L}
valida letras UTF e\p{N}
valida números UTF. Você pode verificar este documento para mais informações.fonte
Tente o código abaixo para e-mail no formato de
1ª parte
-jsmith
2ª parte[email protected]
fonte
Eu testei isso abaixo
regular expression
para pontos únicos e múltiplos consecutivos nodomain
nome -e aqui estão os exemplos que foram completamente cumpridos acima
regex
.Eu tentei cobrir o máximo comumente usado
email id's validation
por este ilustrado acimaregex
e ainda funcionando ...Se você ainda sabe que algum uso consequencial
email id's
foi deixado aqui, por favor me avise na seção de comentários!fonte
Esta é a regex para corresponder a endereços de e-mail válidos.
fonte
você pode usar uma expressão regular simples para validar a id do e-mail,
Descrição :
fonte
Você pode verificar se os e-mails são válidos ou não usando essas bibliotecas e, claro, pode adicionar array para este projeto a seguir.
resultado :
Mail is: true
Correio é: falso
fonte
fonte
Graças à resposta de @Jason Buberel, acho que as letras minúsculas devem ser validadas pelo RegEX. Portanto, o seguinte está correto:
Agora, ambos [email protected] e [email protected] são válidos!
Observe que \. deve ser \\. escapar . e tem \. em si. Desde ,. é um caractere significativo em java RegEX significa todos os caracteres.
fonte
Pattern.CASE_INSENSITIVE
, então não há necessidade dea-z
Regex para validação semelhante ao Facebook:
Dto para testes de unidade (com Lombok):
Emails válidos / inválidos abaixo com testes de unidade:
}
fonte