Visto 17.981 veces.

AS3 – Útiles – Validación / validar correo electrónico / email con expresiones regulares en actionscript y javascript

Antes de nada, vamos a intentar entender lo más importante en la sintaxis de un correo, al final del post encontrareis los ejemplos y el código pero no os hará daño leer un poquito antes.

Tener una pequeña noción será útil para comprobar si una expresión regular funciona correctamente, así que dicho esto vamos a echarle un ojo a nuestra amiga wiki pedía.

Según la wiki pedía la sintaxis del email está formada por el nombre local y el dominio (nombre_local@dominio.com), donde nombre_local es el conjunto de caracteres que preceden al carácter @.

NOMBRE_LOCAL:
En principio los simbolos/caracteres ASCII permitidos para este conjunto según la wiki son:

Las mayúsculas y minúsculas del alfabeto ingles (az-AZ)
Los dígitos del 0 al 9
Los símbolos: ! # $ % & ‘ * + – / = ? ^ _ ` { | } ~ .

De estos símbolos hay que prestar atención a algunos en concreto que tiene restricciones como el punto ( . ) la wiki nos dice que podemos colocar el punto dentro del nombre local siempre y cuando no esté al principio o al final ni tampoco se repita 2 veces consecutivas.

Sabiendo esto podemos deducir que los correos
nombre.local@gmail.com, nombre.local.com@gmail.com son correctos y
.nombre@hotmail.com, nombre.@gmail.com, nombre..local@gmail.com son incorrectos

La wiki además nos dice que:
Puede estar permitido correos con el nombre local encerrado entre comillas como por ejemplo “javier vicente”@hotmail.com esto nos permitiría introducir caracteres no permitidos dentro del nombre_local como por ejemplo “javier@vicente”@hotmail.com pero no es común su uso y además la mayoría de empresas impiden mediante filtros registrar correos con este tipo de caracteres, además aunque existan caracteres permitidos sin necesidad de entrecomillarlos no se recomienda porque existen compañías como por ejemplo Hotmail que no aceptan este tipo de correos (Mas abajo he dejado un listado de caracteres permitidos)

Aquí la wiki nos muestra algunos correos de ejemplos más:

Abc.ejemplo.com (Es erróneo porque falta el carácter @)
a@b@c@ejemplo.com (Es erróneo porque solo se permite una @ fuera de las comillas)
“a@b@c”@ejemplo.com (En este caso podría ser correcto pero no es de uso común)
()[]\;:,<>@ejemplo.com (Incorrecto, no se permite ningún símbolo prohibido a no ser que este entre comillas y tampoco asi seria recomedable)

DOMINIO:
Ahora vamos a pasar a mirarnos la parte del nombre del dominio, el nombre del dominio se rige por unas pautas estrictas: debe coincidir con los requisitos de un nombre de host y solo podrá contener letras, dígitos, guiones y puntos. Además se puede dar el caso de que la parte del dominio sea una dirección ip encerrada entre corchetes ej. pepe@[192.168.2.1] pero no es algo común.

Ahora sabemos que el dominio debe ser obligatoriamente un nombre de host y que se permiten letras, dígitos, guiones y puntos. Pero existen algunas restricciones para los guiones y los puntos, en teoría no se permite o no se recomienda utilizar un punto o un guion al principio del dominio ni un guion al final pero si un punto veamoslo.

pepe@.gmail.com, (No permitido)
pepe@_.gmail.com, (No permitido)
pepe@_gmail.com, (No permitido o no se recomienda)
pepe@gmail_.com, (No permitido o no se recomienda)
pepe@g-mail.com.es , (Permitido)

Bueno hasta aquí llega mi resumen de la wiki con algunos añadidos míos, se admiten correcciones, sugerencias y patas de jamon.

También os dejo otro documento de recomendada lectura traducido por mí que especifica un poco mejor los caracteres permitidos en el nombre_local y porque.

Ver lista de caracteres permitidos

Bien a llegado el momento de ir al grano

Validar email con actionscript AS3.0

Aquí tenemos la primera expresión regular:

Esta expresión nos permitirá especificar las extensiones del dominio que queramos que solo estén permitidas

Esta expresión la podemos modificar agregándole lo siguiente [A-Z]{2} y nos quedaría

/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|biz|info|mobi|cat|es|ar)$/i

Haciendo esta modificación permitimos que cuando introduzcamos una extensión de solo 2 caracteres podamos especificar el que nos dé la gana aunque no este puesto como obligatorio en la expresión regular por ejemplo en el siguiente ejemplo nos da true, si en la extensión de 2 caracteres especificáramos solo un carácter nos daría false

En este otro especificamos una extensión de 2 caracteres cualquiera y otra de 3 pero que no Nos devolverá false porque la extensión de 3 caracteres no coincide con las especificadas en la expresión regular

Si no queremos ningún problema con las extensiones entonces podemos utilizar esta otra expresión regular donde podremos especificar las extensiones que nos dé la gana

Las dos expresiones anteriores además de la variación comprueban además otras excepciones entre otras

En definitiva creo que esta expresión regular es bastante acertada para validar emails sin peligro de rechazar emails validos

Ejemplo

This movie requires Flash Player 9

Descargar ejemplo testMailAS3.0.rar - - Descargado (761) veces.

Ahora voy a pasar a hacer el duro trabajo de pasar la funcion testMail de arriba de actionscript3.0 a javascript

[js]
//javascript code

function testMail(mail){
return(/^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+.)+[A-Z]{2,4}$/i.test(mail));
}

Alert(testMail (“info@xavirobot.oficina.pepe.com”));// resultado true
[/js]

tachan!! rapido ¿he? a ver si notais las diferencias.

8 comments on “AS3 – Útiles – Validación / validar correo electrónico / email con expresiones regulares en actionscript y javascript

  • Hola Xavi

    Ante todo muchas gracias por el código que has publicado, pero mis conocimientos de programación son limitados, te cuento por si me puedes ayudar, tengo un formulario en flash + php y al hacer click en el botón enviar hace una validación:

    Como ves solo valida que la dirección de email contenga el carácter “@” y seguido un “.” ¿como podría hacer para decirle que también chequee el dominio?

    Muchisimas gracias y un saludo

    Reply
  • Hola Jose, si quieres validar el correo puedes utilizar la siguiente funcion

    De todas maneras veo que estas utilizando as2, te recomiendo que empieces a utilizar AS3 porque el ejemplo que te puesto no te funcionara con as2.

    Reply
  • pablo@hotmail
    al probar de esta forma en el tercer caso Recomendado “validar email sin extensiones fijas” no sirve la validacion.

    Reply
  • Por fa me podrias dar una expresion para validar que no hayan dos simbolos seguidos y que la entrada no sean solo simbolos?.
    Te lo voy a agradecer mucho.

    Reply
    • Hola tomas no sé muy bien que quieres hacer, una expresión regular no te voy a dar pero te he hecho esta función a ver si te sirve, lo que hace es que comprueba si existen 2 símbolos seguidos, si es así devuelve false, si no encuentra símbolos consecutivos devuelve true, con esto también compruebas que no te metan una cadena con todo símbolos ya que comprobando 2 símbolos seguidos ya estas comprobando las 2 cosas.

      En el array SIM puedes ir añadiendo los símbolos que quieres que se comprueben

      Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">