Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/02/2008, 16:17
Avatar de Carlojas
Carlojas
 
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 9 meses
Puntos: 49
Re: Ayuda con expresiones regulares

Prueba esta funcion muy acertada para lo que deseas:

Código PHP:
// FUNCION VALIDAR CORREO.             
function check_email_address($email)  

// PRIMERO CHECAR QUE HAY UN SOLO SIMBOLO @ Y QUE LOS DEMAS SEAN LARGOS. 
  
if(!ereg("^[^@]{1,64}@[^@]{1,255}$"$email))  
  { 
     
// CORREO INVALIDO POR NUMERO INCORRECTO DE CARACTERES , O NUMERO INCORRECTO DE SIMBOLOS @ 
    
return false
  } 
     
  
// SE DIVIDE EN PARTES PARA HACERLO MAS SENCILLO. 
  
$email_array explode("@"$email); 
  
$local_array explode("."$email_array[0]); 
  for(
$i 0$i sizeof($local_array); $i++)  
  { 
     if(!
ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$"$local_array[$i]))  
     { 
        return 
false
     } 
  }  
     
  
// SE REVISA SI EL DOMINIO ES UNA IP. SI NO, DEBE SER UN NOMBRE DE     DOMINIO VALIDO 
     
if(!ereg("^\[?[0-9\.]+\]?$"$email_array[1]))  
     {  
          
$domain_array explode("."$email_array[1]); 
         
          if(
sizeof($domain_array) < 2)  
          { 
            return 
false// NO SON SUFICIENTES PARTES O SECCIONES PARA SER UN DOMINIO. 
          

          for(
$i 0$i sizeof($domain_array); $i++)  
          { 
                if(!
ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$"$domain_array[$i]))  
                { 
                      return 
false
                } 
          } 
      } 
          return 
true

Y validas el correo de esta manera

Código PHP:
if(check_email_address($mail)) 

    
// envias el mensaje  

else 
{   
   echo 
"la direccion de correo electronico no es valida"
   echo 
"<a href = 'formulario.php'>Volver</a>";
   exit(); 

Saludos.