JavaScript » Validar el email con JavaScript
Muchas aplicaciones pueden precisar de una validación de email, es decir, validar si lo que está introduciendo el usuario es realmente un email. Esta comprobación es susceptible de hacerse en la maquina cliente, evitando así cargar al servidor con la respectiva comprobación y la consiguiente llamada desde la página web.
Nosotros nos valdremos de JavaScript para validar si la cadena introducida por el usuario es un email. Y al trabajar con validaciones con cadenas nos valdremos de las expresiones regulares.
Toda la implementación del ejercicio estará en montar la expresión regular. Para ello debemos de tener en cuenta varias cosas.
En primer lugar La expresion regular delimita su inicio con /^ y su fin con $/. Por lo que una expresión regular tendría la forma:
/^ expr regular $/
El email se compone de tres partes:
nombre usuario + @ + servidor + dominio
Veamos que consideraciones debemos de tener con cada una de esas partes.
Nombre y servidor
- Debe de empezar por letra o numero. Al menos tiene una letra o número. La letra o número se expresa mediante el carácter \w. Para asegurarnos de que la letra o número aparece al menos una vez utilizaremos el modificador +.
- Puede contener puntos y guiones además de las letras y números. Esta combinación podrá aparecer, es por ello que utilizaremos el modificador * (cero o varias veces). Insertaremos toda la combinación entre paréntesis.
Su expresión regular, para ambos casos, será la siguiente:
\w+([\.-]?\w+)*
Dominio
- Irá al final, detrás de un punto. Podrá tener dos (.es, .fr, .it,...) o tres letras (.com, .net, .org,..) o cuatro (.mobi, info,...). Si queremos indicar un número concreto de caracteres lo expresamos con el número entre los operadores { y }
- Además podemos tener varios dominios seguidos (.com.ar, .com.uk,....) es por ello que deberemos de usar el modificador +. Ya que el dominio podrá aparecer varias veces.
Su expresión regular será comos sigue:
(\.\w{2,3,4})+
La expresión regular final para validar el email con JavaScript sería:
/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3,4})+$/
Para la implementación de validar el email con JavaScript vamos a crear un formulario, el cual llamará a la función validarEmail. Esta función será la que ejecute la expresión regular.
function validarEmail(email){...}
La expresión regular la ejecutaremos mediante el método test del objeto RegExp. El objeto RegExp, como su nombre bien indica, representa las expresiones regulares.
function validarEmail(valor) { if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3,4})+$/.test(valor)){ alert("La dirección de email " + valor + " es correcta."); } else { alert("La dirección de email es incorrecta."); } }
Actualizado 20.junio.09
No se había contemplado la gestión de dominios de 4 letras como .mobi o .info.
![]() Visualiza el artículo |
![]() Descargar el código |
![]() Error en el código |
Artículos relacionados:









Octubre 13, 2009 #
La expresion que dejo alexander funciona bien, funciona mejor que la original
Octubre 28, 2009 #
Estimados y que pasa cuando el mail tiene un “_” , “-”, “.” por ejemplo
macela.godoy@usach.cl
m_godoy@usach.cl
m-godoy@usach.cl
que pasa en esos casos. por que por el momento me da error en todos esso casos-
gracias,.
Noviembre 13, 2009 #
Hola, lo que pasa es que siempre me sale que el correo esta incorrecto cuando el correo esta bien, depronto algo le falta al codigo, gracias.
Noviembre 18, 2009 #
Por completar un poco más, yo creo que el dominio principal, .es .com .mobi no puede tener números, se podria ajustar un poco mas poniendo [a-Z]{2,4} en vez de \w{2,4}.
Diciembre 1, 2009 #
OOO ME FUNCIONÓ GENIAL…. JUSTAMENTE LO QUE BUSCABA MUCHAS GRACIAS
Diciembre 17, 2009 #
Amigo la forma propuesta [a-Z]{2,4} para aceptar sólo letras al final del dominio es incorrecta, para lograr el mismo efecto y evitar números debe usarse \D{2,4} en vez de \w{2,4}
Lo anterior aceptará sólo letras. Está probado
Saludos
Diciembre 17, 2009 #
(sorry, sólo me estoy incribiéndome para recibir comentarios)
Enero 28, 2010 #
“Amigo la forma propuesta [a-Z]{2,4} para aceptar sólo letras al final del dominio es incorrecta, para lograr el mismo efecto y evitar números debe usarse \D{2,4} en vez de \w{2,4}
Lo anterior aceptará sólo letras. Está probado”
lo he probado asi y nada de nada man, sigue mandando el mensaje que le puse que estaba incorrecto, ademas la funcion la he implementado de la siguiente forma por si a alguien le interesa:
if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\D{2,4})+$/.test(valor))
{
alert(“El Email ingresado es incorrecto.”);
Email.focus();
Email.select();
return false;
}
aun de esta forma, aplicando el cambio de alexander y de ControlCalidad no funciona, me sigue mandando el mensaje que le pedi me mandara cuando esta erroneo el email… :/
Febrero 9, 2010 #
Lo probé, y no funciona, y me estoy volviendo loco. Agarré el Visual Web Developer, copié la función de validación y aún así no anda.
Alguien que sepa como hacerlo, que lo diga. En este caso, probado desde el link que se provee, sigue dando que el mail es incorrecto.
Abril 15, 2010 #
Compañeros, todos hemos pasado rompiéndonos la cabeza para encontrar una expresión regular que nos funcione… les dejo una página donde pueden encontrar algunas soluciones:
http://regexlib.com/DisplayPatterns.aspx
vayan a la seccion EMAIL y obtendrán muchas respuestas…
que tengan un excelente dia…