Validar formularios con JavaScript y Expresiones Regulares: Validación de E-Mail

JavaScript
Continuando con el tema de JavaScript y el uso de Expresiones Regulares para validar formularios ( el artículo anterior escribí sobre como Validar URL con javascript ), en esta ocasión mostraré una expresión regular que comprueba si las direcciones de correo electrónico escritas en un formulario están en formato correcto, por ejemplo:

  • nombre@dominio.com es correcto y pasa la validación.
  • nombre@dominio es incorrecto y dará error.

 

La expresión regular que nos permitirá validar que un campo de formulario contiene una dirección de correo electrónico correcta, es la siguiente:

var er = /^[0-9a-z_\-\.]+@([a-z0-9\-]+\.?)*[a-z0-9]+\.([a-z]{2,4}|travel)$/i;

Y la siguiente expresión regular valida que la dirección de correo sea de un dominio específico:

Nota: Cambiar dominio\.com por el dominio que quieres validar, si quieres validar varios dominios, se deben encerrar entre paréntesis y separar cada dominio con el caracter |

var er = /^[0-9a-z_\-\.]+@dominio\.com$/i;

Las expresiones regulares anteriores, se pueden usar en la función que validará que el campo de correo sea correcto, por ejemplo:

function ValidaMail(mail) {
var er = /^[0-9a-z_\-\.]+@([a-z0-9\-]+\.?)*[a-z0-9]+\.([a-z]{2,4}|travel)$/i;
return er.test(mail);
}
if(!ValidaMail(f.campo.value)) {
alert("La dirección de EMail es incorrecta !!");
}

Y eso es todo, espero que la información les sea de mucha utilidad, y si tienen cualquier duda, corrección o comentario, usen el formulario de abajo para comentar… será un gusto ayudar.

Nota: La expresión regular es válida para usar con la función preg_match de PHP.

Desde México, DASUMO :)

  1. Crear ventanas con JavaScript usando el objeto Window
  2. Formulario de contacto PHP con validación
  3. Expresión Regular para validar URLs con JavaScript
  4. JavaSript: Usar target _blank XHTML 1.0 Strict y XHTML 1.1
Escrito en: Webmaster
12 comentariosDeja un comentario
  • Hola,

    En mi opinión, el codigo anterior no es del todo correcto, ya que, según el RFC que establece el formato de las direcciones de correo, el punto . en la parte local del correo (antes de la @), no debe ir nunca como primer ni como último caracter de dicha parte, es decir, nunca debe emplearse un punto como primer caracter de la dirección de correo ni tampoco debe ir nunca junto a la @. Esto debe controlarse también en la expresión regular.

    Saludos!

    • Hola Celia, tienes razón y eres muy observadora… Lo hice de ese modo para simplificar ya que admite correos en formato “válido” (excepto por lo que has comentado), además aunque jamás he visto direcciones de correo que inicien con un PUNTO, sí que existen (literalmente) aquellas con uno o más PUNTOS antes del @.

      Con ligeras modificaciones a la expresión regular se consigue validar direcciones de correo de acuerdo a RFC, a ver si más tarde lo posteo.

      Un saludo y mil gracias por tu observación :)

  • Jonathan Guisao S. dice:

    Muchas gracias, estaba pegado en la validación de la dirección de correo.naaye8

  • Muchas gracias por este código! Llevaba una mañana entera intentando que funcionara una validación de emial para un formulario y esto me ha servido. ¡Por fin coño!

  • es interesante la explicación puesto que es de gran ayuda, pero quisiera saber como hacer para que el nombre de usuario no me permita ingresar dos puntos seguidos(..)?

    • Hola Andre:

      No te recomiendo hacerlo antes del @ pues existen direcciones de email con uno o más (.) seguidos, pero para la parte del dominio (lo que va después del @) quedaría así:

      /^[0-9a-z_\-\.]+@([a-z0-9\-]+\.?)*[a-z0-9]+\.([a-z]{2,4}|travel)$/i;

      Saludos (ya he actualizado la expresión regular en el post, gracias por el comentario).

  • Hola Gracias

    Me funciono excelente pero porque al final va la i

    • Con el identificador i la expresión regular no distingue entre mayúsculas y minúsculas, osea, tomará como válidos los correos:

      HOLA@ALGO.COM y hola@algo.com

      Saludos.

  • SER eres un verdadero haragán, ¿Acaso es tán difícil escribir una línea de código?, la expresión regular es sencilla ocupa una línea, veo que eres el típico copy paste que nunca hace nada si no es copiando y pegando, jajaja, que divertida es la gente mediocre como tu.

    A los autores del blog, gracias por la expresión regular para validar mail, me salvó el día.

  • Para que pones un codigo si no permites copiarlo… no inventes… si es aportacion… no comprendo esto… si esa es tu idea.. simplemente sin palabras

    • Hola…

      Desde hace tiempo (antes de este post), coloqué un script anticopia en mi sitio porque siempre robaban mis artículos y aparecían en otros blogs sin compartir el crédito, actualmente ya no necesito ese script porque mi blog está semi-abandonado, sin embargo, al momento de crear esté artículo pasé por alto dicho script y me olvidé de retirarlo, me disculpo por ello, en en transcurso de hoy me daré tiempo para retirarlo…

      Por otro lado, ¿No crees que era más fácil un AVISO o simple PREGUNTA en lugar de un RECLAMO?

Deja un comentario

 

     


Subir