elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  validar email o dirección de correo con Pattern y Matcher
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: validar email o dirección de correo con Pattern y Matcher  (Leído 20,317 veces)
kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
validar email o dirección de correo con Pattern y Matcher
« en: 3 Agosto 2009, 19:46 pm »

La expresión regular para validar un email entero es: (comento que puede que no sea del todo correcta)

"[a-zA-Z0-9]+[.[a-zA-Z0-9_-]+]*@[a-z0-9][\\w\\.-]*[a-z0-9]\\.[a-z][a-z\\.]*[a-z]$"

Esta puede tener algún fallo: "[a-zA-Z0-9]+[.[a-zA-Z0-9_-]+]*@[a-zA-Z0-9_]+[.[a-zA-Z]+]+"

También esta otra: [a-zA-Z0-9][a-zA-Z0-9_-]+[\\p{Punct}[a-zA-Z0-9_-]+]*@[a-zA-Z0-9_]+[\\{Punct}[a-zA-Z]+]+


También hay dos metodos para validar por separado, uno para la parte izquierda del email y otro para la derecha derecha del email.


Código
  1.  
  2. import java.util.regex.*;
  3. import java.util.StringTokenizer;
  4.  
  5. public class Main {
  6.  
  7.    public boolean validateEmail(String email) {
  8.  
  9.        Pattern p = Pattern.compile("[a-zA-Z0-9]+[.[a-zA-Z0-9_-]+]*@[a-z0-9][\\w\\.-]*[a-z0-9]\\.[a-z][a-z\\.]*[a-z]$");//me gusta esta
  10.  
  11.        Matcher m = p.matcher(email);
  12.        return m.matches();
  13.    }
  14.  
  15.    public boolean validateLeftEmail(String emailLeft) {
  16.        Pattern p = Pattern.compile("[a-zA-Z0-9]+[.[a-zA-Z0-9_-]+]*");
  17.        Matcher m = p.matcher(emailLeft);
  18.        return m.matches();
  19.    }
  20.  
  21.    public boolean validateRightEmail(String emailRight) {
  22.        Pattern p = Pattern.compile("[a-z0-9][\\w\\.-]*[a-z0-9]\\.[a-z][a-z\\.]*[a-z]$");
  23.        Matcher m = p.matcher(emailRight);
  24.        return m.matches();
  25.  
  26.    }
  27.  
  28.    public static void main(String[] args) {
  29.        Main miMain = new Main();
  30.        System.out.println("*****************************validateEmail******************************************");
  31.        System.out.println("email: " + "example@cs.uns.edu.ar " + miMain.validateEmail("example@cs.uns.edu.ar"));
  32.        System.out.println("email: " + "name-surname@computer_name.net_name.com " + miMain.validateEmail("name-surname@computer_name.net_name.com"));
  33.        System.out.println("email: " + "name-sur#name@computer_name.net_name.com " + miMain.validateEmail("name-sur#name@computer_name.net_name.com"));
  34.        System.out.println("email: " + "name-surname@comp#uter_name.net_name.com " + miMain.validateEmail("name-surname@comp#uter_name.net_name.com"));
  35.        System.out.println("email: " + "name-surname@computer_name.net_na#me.com " + miMain.validateEmail("name-surname@computer_name.net_na#me.com"));
  36.        System.out.println("email: " + "!u@hotm@ail.co " + miMain.validateEmail("!u@hotm@ail.co"));
  37.        System.out.println("email: " + "u@hotm@ail.co " + miMain.validateEmail("u@hotm@ail.co"));
  38.        System.out.println("email: " + "u@hotmail.co " + miMain.validateEmail("u@hotmail.co"));
  39.        System.out.println("email: " + "u@hotmail.c " + miMain.validateEmail("u@hotmail.c"));
  40.        System.out.println("email: " + "!u@hotmail.cc " + miMain.validateEmail("!u@hotmail.cc"));
  41.        System.out.println("email: " + "uu@hotmail.cc " + miMain.validateEmail("uu@hotmail.cc"));
  42.        System.out.println("email: " + "@hotmail.cc " + miMain.validateEmail("@hotmail.cc"));
  43.        System.out.println("email: " + ".u@hotmail.cc " + miMain.validateEmail(".u@hotmail.cc"));
  44.        System.out.println("email: " + "u.u@hotmail.cc " + miMain.validateEmail("u.u@hotmail.cc"));
  45.        System.out.println("email: " + "u u@hotmail.cc " + miMain.validateEmail("u u@hotmail.cc"));
  46.        System.out.println("email: " + "uu@h.cc " + miMain.validateEmail("uu@h.cc"));
  47.        System.out.println("email: " + "5u@h.cc " + miMain.validateEmail("5u@h.cc"));
  48.        System.out.println("email: " + "uu@hh.cc " + miMain.validateEmail("uu@hh.cc"));
  49.        System.out.println("email: " + "5uu@hh.cc " + miMain.validateEmail("5uu@hh.cc"));
  50.        System.out.println("email: " + "5uu@h.cc " + miMain.validateEmail("5uu@h.cc"));
  51.        System.out.println("email: " + "5.cc " + miMain.validateEmail("5.cc"));
  52.        System.out.println("email: " + "5@h.cc " + miMain.validateEmail("5@h.cc"));
  53.        System.out.println("email: " + "5@h.cc.d " + miMain.validateEmail("5@h.cc.d"));
  54.        System.out.println("email: " + "5@h.cc.dd " + miMain.validateEmail("5@h.cc.dd"));
  55.        System.out.println("email: " + "5@h.c.dd " + miMain.validateEmail("5@h.c.dd"));
  56.        System.out.println("email: " + "avf-@h.c.dd " + miMain.validateEmail("avf-@h.c.dd"));
  57.        System.out.println("email: " + "a-vf@h.c.dd " + miMain.validateEmail("a-vf@h.c.dd"));
  58.        System.out.println("email: " + "avf@h.c.dd " + miMain.validateEmail("avf@h.c.dd"));
  59.        System.out.println("email: " + "-avf@h.c.dd " + miMain.validateEmail("-avf@h.c.dd"));
  60.        System.out.println("email: " + "_avf@h.c.dd " + miMain.validateEmail("_avf@h.c.dd"));
  61.        System.out.println("email: " + "a-_-_.-_b--d__-@h.c.dd " + miMain.validateEmail("a-_-_.-_b--d__-@h.c.dd"));
  62.        System.out.println("email: " + "a_._-@h.c.dd " + miMain.validateEmail("a_._-@h.c.dd"));
  63.        System.out.println("email: " + "a_.-@h.c.dd " + miMain.validateEmail("a_.-@h.c.dd"));
  64.        System.out.println("email: " + "a.-@h.c.dd " + miMain.validateEmail("a.-@h.c.dd"));
  65.  
  66.        System.out.println("*****************************validateRightEmail******************************************");
  67.        System.out.println("email: " + "cs.uns.edu.ar " + miMain.validateRightEmail("cs.uns.edu.ar"));
  68.        System.out.println("email: " + "computer_name.net_name.com " + miMain.validateRightEmail("computer_name.net_name.com"));
  69.        System.out.println("email: " + "comp#uter_name.net_name.com " + miMain.validateRightEmail("comp#uter_name.net_name.com"));
  70.        System.out.println("email: " + "computer_name.net_na#me.com " + miMain.validateRightEmail("computer_name.net_na#me.com"));
  71.        System.out.println("email: " + "hotm@ail.co " + miMain.validateRightEmail("hotm@ail.co"));
  72.        System.out.println("email: " + "hotmail.co " + miMain.validateRightEmail("hotmail.co"));
  73.        System.out.println("email: " + "hotmail.c " + miMain.validateRightEmail("hotmail.c"));
  74.        System.out.println("email: " + "h.cc " + miMain.validateRightEmail("h.cc"));
  75.        System.out.println("email: " + "hh.cc " + miMain.validateRightEmail("hh.cc"));
  76.        System.out.println("email: " + "5.cc " + miMain.validateRightEmail("5.cc"));
  77.        System.out.println("email: " + "h.cc.d " + miMain.validateRightEmail("h.cc.d"));
  78.        System.out.println("email: " + "h.cc.dd " + miMain.validateRightEmail("h.cc.dd"));
  79.        System.out.println("email: " + "h.c.dd " + miMain.validateRightEmail("h.c.dd"));
  80.        System.out.println("email: " + "ail.co " + miMain.validateRightEmail("ail.co"));
  81.        System.out.println("email: " + "hotm@ail.co " + miMain.validateRightEmail("hotm@ail.co"));
  82.        System.out.println("email: " + "hotm " + miMain.validateRightEmail("hotm"));
  83.        System.out.println("email: " + "hotmail.co " + miMain.validateRightEmail("hotmail.co"));
  84.        System.out.println("email: " + "hotmail.c " + miMain.validateRightEmail("hotmail.c"));
  85.        System.out.println("email: " + "hotmail.cc " + miMain.validateRightEmail("hotmail.cc"));
  86.        System.out.println("email: " + "h.cc " + miMain.validateRightEmail("h.cc"));
  87.        System.out.println("email: " + "5.cc " + miMain.validateRightEmail("5.cc"));
  88.        System.out.println("email: " + "h.cc.d " + miMain.validateRightEmail("h.cc.d"));
  89.        System.out.println("email: " + "h.cc.dd " + miMain.validateRightEmail("h.cc.dd"));
  90.        System.out.println("email: " + "5h.c.dd " + miMain.validateRightEmail("5h.c.dd"));
  91.  
  92.        System.out.println("*****************************validateLeftEmail******************************************");
  93.        System.out.println("email: " + "!u@hotm " + miMain.validateLeftEmail("!u"));
  94.        System.out.println("email: " + "u " + miMain.validateLeftEmail("u"));
  95.        System.out.println("email: " + "uu " + miMain.validateLeftEmail("uu"));
  96.        System.out.println("email: " + "!u " + miMain.validateLeftEmail("!u"));
  97.        System.out.println("email: " + ".u " + miMain.validateLeftEmail(".u"));
  98.        System.out.println("email: " + "u.u " + miMain.validateLeftEmail("u.u"));
  99.        System.out.println("email: " + "u u " + miMain.validateLeftEmail("u u"));
  100.        System.out.println("email: " + "5u " + miMain.validateLeftEmail("5u"));
  101.        System.out.println("email: " + "5.cc " + miMain.validateLeftEmail("5.cc"));
  102.        System.out.println("email: " + "5 " + miMain.validateLeftEmail("5"));
  103.        System.out.println("email: " + "avf- " + miMain.validateLeftEmail("avf-"));
  104.        System.out.println("email: " + "a-vf " + miMain.validateLeftEmail("a-vf"));
  105.        System.out.println("email: " + "avf " + miMain.validateLeftEmail("avf"));
  106.        System.out.println("email: " + "-avf " + miMain.validateLeftEmail("-avf"));
  107.        System.out.println("email: " + "_avf " + miMain.validateLeftEmail("_avf"));
  108.        System.out.println("email: " + "a-_-_.-_b--d__- " + miMain.validateLeftEmail("a-_-_.-_b--d__-"));
  109.        System.out.println("email: " + "a_._- " + miMain.validateLeftEmail("a_._-"));
  110.        System.out.println("email: " + "a_.- " + miMain.validateLeftEmail("a_.-"));
  111.        System.out.println("email: " + "a.- " + miMain.validateLeftEmail("a.-"));
  112.    }
  113. }
  114.  
  115.  


« Última modificación: 4 Agosto 2009, 20:32 pm por kinos » En línea

Danther

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: validar email o dirección de correo con Pattern y Matcher
« Respuesta #1 en: 3 Agosto 2009, 20:49 pm »

¿Y la expresion regular no seria mas bien:
"[a-zA-Z0-9]+[a-zA-Z0-9_-]*@[a-zA-Z]+\\p{Punct}[a-zA-Z]+"

Es que no le veo la logica a la que has puesto T.T
Prueba con esta, a mi me va bien
Si le falta algo se lo añades y si le sobra se lo quitas (es que tampoco se muy bien cuales son los caracteres permitidos en una direccion de email XD)


En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: validar email o dirección de correo con Pattern y Matcher
« Respuesta #2 en: 3 Agosto 2009, 21:04 pm »

que se supone que quiere decir:
"[a-zA-Z0-9]+[a-zA-Z0-9_-]*@[a-zA-Z]+\\p{Punct}[a-zA-Z]+"  :huh:
perdonad mi ignorancia, y tambienq ue significa y para que sirve el patern y el compile.

saludos
En línea

kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: validar email o dirección de correo con Pattern y Matcher
« Respuesta #3 en: 3 Agosto 2009, 21:45 pm »

Hola Danther en la que has puesto me parece que faltaría el "." de la parte de la izquierda. Y lo que dices de los caracteres permitidos igual habría que revisarlo.
Esta expresión \\p{Punct} no se mu bien que significa.

Debci explico  :) :=> [a-zA-Z0-9]+[.[a-zA-Z0-9_-]+]*@[a-zA-Z0-9_]+[.[a-zA-Z]+]+

[a-zA-Z0-9]+ => valida las cadenas que contienen al menos un caracter de esos tres rangos es igual el orden de los caracteres y tal. El + quiere decir eso, que al menos tiene que haber un caracter, sino no la da por buena.

[a-zA-Z0-9_-]+ => lo mismo que el anterior pero esta cadena puede contener guión y guión bajo

[.[a-zA-Z0-9_-]+]* => el punto signf. cualquier carácter. El asterisco quiere decir que todo ese bloque es o no es... jeje esa es la cuestión. Quiero decir que o aparece o no.
Por ejemplo:

- si tienes sólo ".d" es valido
- si tienes sólo "." no es valido porque como hemos dicho el "+" significa que tiene que haber al menos un caracter.
- si tienes sólo "" es decir cadena vacia es valido

@ => luego va la arroba y lo siguiente mas de lo mismo.

Lo de Pattern es para establecer un patrón, y el compile para compilar la cadena respecto a dicho patrón. Bueno para que te hagas una idea que tampoco controlo el tema.

Alguna referencia:

http://www.programacion.com/java/articulo/expresionesreg/

http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html

Iré probando a ver que tal va, sino cambiamos la expresión.
« Última modificación: 3 Agosto 2009, 22:43 pm por kinos » En línea

Danther

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: validar email o dirección de correo con Pattern y Matcher
« Respuesta #4 en: 3 Agosto 2009, 22:22 pm »

Un "." no quiere decir .
Sino cualquier caracter
\\p{Punct} es "."

Por lo tanto [a-zA-Z0-9]+[.[a-zA-Z0-9_-]+]*
Significa:

"uno o mas de [a-zA-Z0-9]" y luego "ninguno o mas de: cualquier caracter seguido de uno o mas [a-zA-Z0-9_-]"

Asi que para que quede bien seria:

[a-zA-Z0-9][a-zA-Z0-9_-]+[\\p{Punct}[a-zA-Z0-9_-]+]*@[a-zA-Z0-9_]+[\\Punct[a-zA-Z]+]+

Pruebala ahora, creo que cumple con lo que quieres
Mirate que antes no podias poner _ ni - en la parte izquierda hasta el primer "punto", ahora mientras - o _ no sean el primer caracter, si se puede poner antes del primer "punto"
En línea

kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: validar email o dirección de correo con Pattern y Matcher
« Respuesta #5 en: 3 Agosto 2009, 22:41 pm »

mmm... sip me colao, ahora lo cambio. ahms... que el método validateRightEmail no esta bién del todo, ese hay que mirarlo que se cuelan cadenas así "hotm".
En línea

Danther

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: validar email o dirección de correo con Pattern y Matcher
« Respuesta #6 en: 3 Agosto 2009, 23:45 pm »

El problema estaba en esto:
[.[a-zA-Z0-9_-]+]*

No significa de 0 a x veces "punto y x caracteres"
Sino de 0 a x veces intervalo entre punto, a-z, A-Z, 0-9, _, -
Ademas \p{Punct] incluye muchos mas simbolos, es mejor \.

Prueba ahora con esta:

[a-zA-Z0-9][a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+
En línea

juancho77


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Re: validar email o dirección de correo con Pattern y Matcher
« Respuesta #7 en: 4 Agosto 2009, 07:38 am »

y si mi dirección esta en un subdominio? ej: example@cs.uns.edu.ar ? Creo que hay que revisar eso despues del arroba (digo creo, porque lo lei medio apurado).
En línea

kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: validar email o dirección de correo con Pattern y Matcher
« Respuesta #8 en: 4 Agosto 2009, 16:52 pm »

y si mi dirección esta en un subdominio? ej: example@cs.uns.edu.ar ? Creo que hay que revisar eso despues del arroba (digo creo, porque lo lei medio apurado).

Pues no la da por valida...  :(
En línea

Danther

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: validar email o dirección de correo con Pattern y Matcher
« Respuesta #9 en: 4 Agosto 2009, 17:25 pm »

[a-zA-Z0-9][a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+

Esta si  --^--^   -->-->
« Última modificación: 4 Agosto 2009, 17:46 pm por Danther » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Validar email en jtextfield
Java
berna1001 2 8,713 Último mensaje 14 Mayo 2011, 03:14 am
por Valkyr
Extraer direccion email de mis mensajes de OutlookExpress o DBX ¿Como?
Foro Libre
Morgan007 1 1,585 Último mensaje 20 Febrero 2015, 09:50 am
por Morgan007
[Pregunta]: Validar email con javascript
Desarrollo Web
Leguim 4 2,187 Último mensaje 29 Septiembre 2019, 03:37 am
por #!drvy
[Pregunta]: Escucho sugerencias (Validar email)
Desarrollo Web
Leguim 5 2,119 Último mensaje 1 Octubre 2019, 19:18 pm
por #!drvy
[Pregunta]: Escucho sugerencias (Validar email) PARTE 2
Desarrollo Web
Leguim 2 1,758 Último mensaje 2 Octubre 2019, 05:28 am
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines