Validar email en ASP

  • Por
Creamos una función, en VBScript para páginas ASP, que comprueba si un email dado está escrito correctamente o no.
Vamos a revisar un script en ASP, escrito con el lenguaje de programación VBScript, para comprobar que un correo electrónico está escrito correctamente. Esta comprobación no sirve para saber si el correo electrónico existe o no, sino que nos puede informar si el correo está bien construido sintácticamente (es decir, tiene la arroba "@", una terminación de dominio, puntos donde deben ir puntos, etc.).

Este script está basado en un función que recibe el string que contiene el email que se pretende validar. La función realiza una serie de comprobaciones y devuelve false en caso de que no esté bien escrito el email o true en caso de que la dirección de correo sea correcta (desde el punto de vista de la escritura, recordamos que no mira a ver si el mail existe o no)

Las comprobaciones que hace son las siguientes, listadas en el mismo orden en el que aparece en el script:
  1. Rompe el email en dos partes, utilizando como separador la arroba. Si se ha roto en menos de dos partes es que no hay arroba o no está bien situada.
  2. Para cada parte:
    1. Compruebo que tiene algún carácter
    2. Para cada carácter miro a ver si es un carácter permitido (es un carater numérico, alfanumérico o es un guión.
    3. Que no empiece por un punto.
  3. Compruebo que en la segunda parte de las conseguidas en el punto 1, tengo por lo menos un punto
  4. Que en la misma segunda parte tengo dos caracteres o tres, después del último punto. (Caracteres suficientes para la terminación del dominio)
  5. Si encuentro dos puntos seguidos en el email (..) tampoco es válido
Si la función detecta algún error en la sintaxis, devuelve false y termina la función... si no encontró ningún error, al final del todo, devuelve true.

El código comentado de la función se puede ver a continuación. También podemos descargar el script para utilizarlo en nuestras propias páginas ASP.

<%
function validarEmail(email)
    dim partes, parte, i, c
    'rompo el email en dos partes, antes y después de la arroba
    partes = Split(email, "@")
    if UBound(partes) <> 1 then
       'si el mayor indice del array es distinto de 1 es que no he obtenido las dos partes
       validarEmail = false
       exit function
    end if
    'para cada parte, compruebo varias cosas
    for each parte in partes
       'Compruebo que tiene algún caracter
       if Len(parte) <= 0 then
          validarEmail = false
          exit function
       end if
       'para cada caracter de la parte
       for i = 1 to Len(parte)
          'tomo el caracter actual
          c = Lcase(Mid(parte, i, 1))
          'miro a ver si ese caracter es uno de los permitidos
          if InStr("._-abcdefghijklmnopqrstuvwxyz", c) <= 0 and not IsNumeric(c) then
             validarEmail = false
             exit function
          end if
       next
       'si la parte actual acaba o empieza en punto la dirección no es válida
       if Left(parte, 1) = "." or Right(parte, 1) = "." then
          validarEmail = false
          exit function
       end if
    next
    'si en la segunda parte del email no tenemos un punto es que va mal
    if InStr(partes(1), ".") <= 0 then
       validarEmail = false
       exit function
    end if
    'calculo cuantos caracteres hay después del último punto de la segunda parte del mail
    i = Len(partes(1)) - InStrRev(partes(1), ".")
    'si el número de caracteres es distinto de 2 y 3
    if not (i = 2 or i = 3) then
       validarEmail = false
       exit function
    end if
    'si encuentro dos puntos seguidos tampoco va bien
    if InStr(email, "..") > 0 then
       validarEmail=false
       exit function
    end if
    validarEmail = true
end function
%>

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Trulala de Córdoba

30/5/2006
Hola gente.

Acabo de probar la rutina para validar el e-mail y funciona perfecto.
Muchas gracias y un saludo.

Víctor

04/10/2006
Hola,

cuando se comprueban uno a uno los caracteres de cada parte no se permite números, si lo he entendido bien, la parte que queda a la izquierda de la arroba (@) no puede contener números, cosa que los emails si pueden tener, ¿o no es así?.

Me gustaría saber si estoy o no en lo correcto.

Gracias

Josemi

18/6/2007
en la parte que valida cuantos caracteres hay después del punto
if not (i = 2 or i = 3) then

yo lo reemplazaría por esto:

if not (i = 2 or i = 3 or i = 4) then

ya que existen dominios .info que tienen 4 caracteres

Natalia

16/7/2007
Hola Miguel,
Muchas gracias por tu solucion. La estoy usando y funciona perfectamente.

Saludos,

Natalia

Ricardo Soto

25/3/2012
Link descargar ValidarEmail está roto
Favor revisar