SAC

SAC

Saturday 17 May 2008

¡Usar expresiones regulares para emails!

Debido a mi incapacidad casi absoluta de memorizar expresiones regulares, o incluso de poder construirlas medianamente bien, generalmente me dedico a buscarlas en internet. En el caso de necesitar la validación de una dirección de correo electrónico (pongamos por caso, en javascript) si recurrimos a google nos encontramos con un catálogo de cosas que no se deben hacer.

Sin ir más lejos, en el sitio de w3cschools, la función que valida emails es este mamarracho:

function validate_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@");
dotpos=value.lastIndexOf(".");
if (apos < 1||dotpos-apos > 2)
{alert(alerttxt);return false;}
else {return true;}
}
}

Esto no es una muy buena práctica, debido a que la única validación que hace es asegurarse de que haya un punto y una arroba en la dirección. y que eventualmente el punto esté luego de la arroba. Pero por ejemplo no se asegura de que no haya caracteres extraños en la dirección, o que la última parte del dominio sea correcta.

Yo propongo que todas las validaciones de emails se hagan con expresiones regulares, y para ello cuento con el siguiente código.


var Validate = {
'email': function (val){
var regex = new RegExp(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
return regex.test(val);
}

}

La forma de utilizarlo es la siguiente:

var email = "usuario@servidor.com";
if (!Validate.email(email)){
alert('la dirección: ' + email + ' no es válida.');
}

0 comments: