Foros del Web » Programación para mayores de 30 ;) » RegExp »

Expresion regular para validar cadena de correos

Estas en el tema de Expresion regular para validar cadena de correos en el foro de RegExp en Foros del Web. Hola a todos, Necesito validar un campo donde se ingresan, separados por (,)coma, emails adicionales para notificaciones, la solución rápida es convertir la cadena a ...
  #1 (permalink)  
Antiguo 10/09/2012, 19:58
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Expresion regular para validar cadena de correos

Hola a todos,

Necesito validar un campo donde se ingresan, separados por (,)coma, emails adicionales para notificaciones, la solución rápida es convertir la cadena a un arreglo, recorrerlo y validar uno por uno.

Pero quiero hacer la validación sobre la cadena con una expresión regular, tengo el siguiente script.

Código PHP:
Ver original
  1. $regexp = '/^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}),?)+$/';
  2. echo filter_var($string, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>$regexp))) ? 1 : 0;

Todas las validaciones con esa expresión han sido correctas menos cuando quito la coma, me sigue dando 1 y debería ser 0.

Alguna observación para que funcione?

Saludos!
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana
  #2 (permalink)  
Antiguo 10/09/2012, 20:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresion regular para validar cadena de correos

Vaya, tan sencillo que sería validar el arreglo pero prefieres complicarte con una expresión regular compleja para un problema trivial.

Una de las normas de quienes usamos RegExps es no utilizarlas para cada tontería que se nos viene en mente.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 10/09/2012, 20:49
 
Fecha de Ingreso: octubre-2011
Ubicación: Argentina
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Expresion regular para validar cadena de correos

Lo podes hacer así:

Código PHP:
Ver original
  1. function validarVarios($cadena, $separador)
  2. {
  3.     $validos = 0;
  4.     $analizar = explode($separador, $cadena);
  5.     for($i = 0; $i < sizeof($analizar); $i++)
  6.     {
  7.         if(preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$^", $cadena)) $validos++;
  8.     }
  9.     return (($validos == sizeof($analizar)) ? true : false);
  10. }

Ejemplo:

Código PHP:
Ver original
  1. if(validarVarios($msn, ",")) echo "Es valido";
  2. else echo "No es valido";
  3.  
  4. if(validarVarios($msn, ",")) echo "Es valido";
  5. else echo "No es valido";

La primera retornaría true, y la segunda false.

Etiquetas: email, php, validar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:00.