Jump to content

metodo para validar um endereço de email


DiJrId0u
 Share

Recommended Posts

Caros amigos,

Estou com algumas duvidas em construir um metodo booleano que me verifique se um determinado endereço de mail(String) segue os padrões normais definidos.

tenho um metodo de teste que testa os seguintes endereços:

assertTrue(ContactSingle.checkEmail("dd.eee@g.com"));
     assertTrue(ContactSingle.checkEmail("a.b.34.dd.eee@f.g.com"));
     assertTrue(ContactSingle.checkEmail("a@b.3om"));
     assertFalse(ContactSingle.checkEmail("a@com"));
     assertFalse(ContactSingle.checkEmail(".a@b.com"));
     assertFalse(ContactSingle.checkEmail("a.@b.com"));
     assertFalse(ContactSingle.checkEmail("a@.b.com"));
     assertFalse(ContactSingle.checkEmail("a@b.com."));
     assertFalse(ContactSingle.checkEmail("as#@b.com"));
     assertFalse(ContactSingle.checkEmail("a@b%.com"));

Depois, defini na classe ContactSingle o seguinte método:

public static boolean checkEmail(String email)
  {
     Pattern modeloEmail = Pattern.compile
     ("([a-zA-Z0-9%]+([.-_][a-zA-Z0-9%])*)" + "@" +
      "([a-zA-Z0-9%]+([.-_])+[a-zA-Z0-9%])*");

     Matcher m = modeloEmail.matcher(email);

     boolean b = m.matches();

     if (b)
     {
        return true;         
     }

     return false;
  }

O problema, é que não consigo passar os testes e creio que o meu problema esteja na definição da variável modeloEmail.

Alguém pode dar uma dica?

Cumprimentos,

Henrique Guerreiro

Link to comment
Share on other sites

Obrigado.

Já notei que o problema é mesmo na construção da expressão.

Preciso de uma expressão logica que suporte todos os testes e não estou a conseguir construi-la.

consigo passar nos exemplos nome@mail.com, nome.nome@mail.com, mas se for algo do dipo nome.n.n.nome@mail-int.com, já nao consigo!

vou continuar a partir a cabeça...

Cumprimentos

Link to comment
Share on other sites

consegui com a seguinte expressão:

"[a-z]+([._-]{1}[a-z0-9]+)*?@([a-z0-9]+[.-_]{1})*?(([a-z0-9]+)\\.[a-z0-9]+){1}"

de facto, estava-me a faltar as barras antes do .(ponto), e mais umas cabeçadas na parede.

Dividi o endereço em blocos obrigatórios e opcionais em que, no endereço nome@domain.com, o "nome" é o 1º bloco e o "domain.com" o 2º bloco. num endereço nome_op.op@op-domain.com, tudo o que nao pertence ao 1º e 2º bloco, é opcional... "_op.op" e "op-" é opcional.

Obrigado na mesma 🙂

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.