Ver Mensaje Individual
  #85 (permalink)  
Antiguo 30/12/2002, 21:03
Avatar de SpiceMan
SpiceMan
 
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 22 años
Puntos: 0
85. Cómo validar una dirección de email utilizando expresiones regulares

P: ¿Cómo valido una dirección de email utilizando expresiones regulares?

R:

Versión Simple
Código PHP:
<html>
<
head>

<
script language="javascript" type="text/javascript" defer>
function 
validaEmail(email)
{
var 
re  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
if (!
re.test(email)) {
    
alert ("Dirección de email inválida");
    return 
false;
}
return 
true;
}
</script>
</head>

<body>
<center>
<form name="email" onSubmit="return validaEmail(this.email.value);">
Email:  <input type="text" name="email"><br>
<input type=submit value="Submit">
</form>
</center>
</body>
</html> 
Versión Compleja:
Código PHP:
<html>
<
head>

<
script language="javascript" type="text/javascript" defer>
// Regexp creado por Sandeep V. Tamhankar ([email protected])

function emailCheck (emailStr) {

var 
emailPat=/^(.+)@(.+)$/;
var 
specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
var 
validChars="\[^\\s" specialChars "\]";
var 
quotedUser="(\"[^\"]*\")";
var 
ipDomainPat=/^[(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})]$/;
var 
atom=validChars '+';
var 
word="(" atom "|" quotedUser ")";
var 
userPat=new RegExp("^" word "(\\." word ")*$");
var 
domainPat=new RegExp("^" atom "(\\." atom +")*$");
var 
matchArray=emailStr.match(emailPat);
if (
matchArray==null) {
    
alert("La dirección de correo parece ser inválida (verifique las @ y .)")
    return 
false
}
var 
user=matchArray[1]
var 
domain=matchArray[2]

if (
user.match(userPat)==null) {
    
alert("El nombre de usuario parece ser inválido.")
    return 
false
}

var 
IPArray=domain.match(ipDomainPat)
if (
IPArray!=null) {
      for (var 
i=1;i<=4;i++) {
        if (
IPArray[i]>255) {
            
alert("La dirección IP de destino es inválida!")
        return 
false
        
}
    }
    return 
true
}

var 
domainArray=domain.match(domainPat)
if (
domainArray==null) {
    
alert("El dominio no parece ser válido.")
    return 
false
}
var 
atomPat=new RegExp(atom,"g")
var 
domArr=domain.match(atomPat)
var 
len=domArr.length
if (domArr[domArr.length-1].length<|| 
    
domArr[domArr.length-1].length>3) {
   
alert("Las direcciones deben terminar con dominios de tres letras, o el código de país de dos letras.")
   return 
false
}

if (
len<2) {
   var 
errStr="Dominio Inválido!";
   
alert(errStr)
   return 
false
}

return 
true;
}
</script>
</head>


<body>
<center>
<form name="email" onSubmit="return emailCheck(this.email.value);">
Email:  <input type="text" name="email"><br>
<input type=submit value="Submit">
</form>
</center>
</body>
</html> 
Funciona en:
- IE 4+
- Netscape 4+
- Opera 5+
- Mozilla 0.8+ / Netscape 6+

Última edición por SpiceMan; 06/01/2003 a las 11:26