Validando emails

Nunca entenderé por qué algunos programadores se preocupa hasta el paroxismo por controlar que las cuentas de correo de los formularios estén correctas.
Luego sin embargo puedes inventarte teléfonos, colocar una misma letra mil veces en el nombre, inventarte países de residencia. Todo eso parece dar igual.

function isEmail(str)
{
var regex = /^[-_.a-z0-9]+@(([-_a-z0-9]+\.)+(ad|ae|aero|af|ag|
ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|
bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|
ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|
dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|
gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|
hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|
kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|
ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|
mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|
nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|
re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|
su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|
ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|
zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i;
}

| Escribe un comentario (20)



Artículos recientes en esta categoría:

Comentarios

1

y... elemental!
el mail va a ser el único medio de contacto que le quede al encargado del formulario en el caso que el emisor ingrese algún dato inválido...

Escrito por nachopro el 13 de Enero de 2008 a las 8:16 PM
Link de este comentario

2

Y dale con los siervos.

Escrito por auster el 13 de Enero de 2008 a las 8:45 PM
Link de este comentario

3

Así como es también la única forma de tener un medio de hacer llegar publicidad con seguridad de ser recibida.

Escrito por Eduardo el 13 de Enero de 2008 a las 8:50 PM
Link de este comentario

4

Una posible respuesta es que hay muchos jefes de proyecto inútiles.

Escrito por discobanco el 13 de Enero de 2008 a las 8:56 PM
Link de este comentario

5

La función ya está desfasada. Falta el .cat.

Escrito por Martí el 13 de Enero de 2008 a las 9:14 PM
Link de este comentario

6

¿Puede ser para evitar posibles errores por parte del usuario a la hora de escribirla? Creo que será eso, más que por razones de seguridad ya que cualquier dato es fácilmente falseable, como apuntaís.

Escrito por Guitardo el 13 de Enero de 2008 a las 9:57 PM
Link de este comentario

7

No suele ser decisión nuestra, pero la razón principal siempre es la importancia. El correo electrónico casi siempre es el dato más importante, o bien a nivel de la aplicación, para la que el resto de los datos giran entorno a él, o bien para los departamentos de marketing y/o publicidad, que sólo emplean el resto de los datos para segmentar.

Escrito por mabarroso el 13 de Enero de 2008 a las 10:27 PM
Link de este comentario

8

Mucha tonteria y yo siempre pongo

test@test.com

(tb para escribir este comentario)

Escrito por rsp el 13 de Enero de 2008 a las 10:36 PM
Link de este comentario

9

Además, falla con las direcciones .cat

Escrito por kenem el 13 de Enero de 2008 a las 11:22 PM
Link de este comentario

10

Interesante... Probablemente dado el anonimato que brinda la web, la dirección de mail es lo más "tangible" que podemos exigir a un usuario, a través de lo cual lo vamos a spammear incesantemente luego de validar que la dirección es correcta :P

Como desarrollador de software que soy, he visto bugs graves con las direcciones de residencia, pero no daré pistas :P

Escrito por Luciano el 13 de Enero de 2008 a las 11:46 PM
Link de este comentario

11

Hombre esa función es algo exagerado, pero comprobar el dominio del correo con un dns mx si que lo he usado muchas veces y creo que es bastante recomendable si te lo puedes permitir.

Así compruebas de verdad que el mail "puede" ser válido y evitas tener mails modo test@test.com como dice rsp :P. La comprobación en código son dos líneas, el tiempo debería ser menor a 500ms (pones un timeout) y consigues aumentar considerablemente la fiabilidad.

Escrito por Blaxter el 14 de Enero de 2008 a las 12:05 AM
Link de este comentario

12

Estoy de acuerdo. Creo que debe validarse que un email tenga "algo", una arroba, otro "algo" y un "puntoalgo". Y ya está, nada más. A partir de aquí creo que la solución pasa por mandar al email una clave de confirmación con un tiempo de vida. Si pasado ese tiempo de vida la cuenta no ha sido confirmada, eliminamos los datos de registro.

Una posible solución para evitar quebraderos de cabeza.

Escrito por antiflag el 14 de Enero de 2008 a las 10:28 AM
Link de este comentario

13

Pa ver si cuela el .xxx

Escrito por naide el 14 de Enero de 2008 a las 1:34 PM
Link de este comentario

14

¿No sería más sencillo hacer un ping al dominio?

Escrito por Alex el 14 de Enero de 2008 a las 2:41 PM
Link de este comentario

15

1. ¿Por qué me piden mi email en este formulario?
2. ¿Se valida?
3. Creo que el mejor recurso para validar emails que existe es tener que introducirlos por duplicado (como las contraseñas). Esto no sólo verifica que esté bien escrito sino que aparta a algunos usuarios dolosos, pero perezosos.

Escrito por antonio el 14 de Enero de 2008 a las 3:36 PM
Link de este comentario

16

Probando si este blog valida porron@porron.porron ... :)

Escrito por fiero el 14 de Enero de 2008 a las 4:00 PM
Link de este comentario

17

@Alex, hacer un ping al dominio no te dice que ese dominio tenga correo electrónico. Aparte de que es mucho más lento que una consulta dns

Escrito por Blaxter el 14 de Enero de 2008 a las 10:57 PM
Link de este comentario

18

La respuesta es muy facil, lo interesante de todos los datos es el correo electronico para poder mandar spam.
El resto no es * (obligatorio)

Escrito por lalala el 18 de Enero de 2008 a las 6:32 PM
Link de este comentario

19

Hola, en el sistema que actualmente construimos en el curro, la expresión regular que utilizo, es aquella que cumple con la
RFC2822. Sólo soporta formatos de direcciones "addr-spec" with "dot-atom", esto es, (ATEXT_TOKEN+(\.ATEXT_TOKEN+)*) @ (ATEXT_TOKEN+(\.ATEXT_TOKEN+)*)

La expresión regular queda como (Java regex):
([a-zA-Z0-9!#\$%\&'\*\+\-/=\?\^_`\{\|\}~]+(\.[a-zA-Z0-9!#\$%\&'\*\+\-/=\?\^_`\{\|\}~]+)*)@([a-zA-Z0-9!#\$%\&'\*\+\-/=\?\^_`\{\|\}~]+(\.[a-zA-Z0-9!#\$%\&'\*\+\-/=\?\^_`\{\|\}~]+)*)

Ni que decir que no valida el dominio, pues según la RFC, no hay lista de dominios a validar, pues un correo electronico no tiene por que tener dominio de primer nivel (TLD) com, es, org, ... Los correos son basicamente identificador@servidor, donde servidor puede ser cualquier cosa (un nombre de máquina).

Escrito por Lucas el 20 de Enero de 2008 a las 10:46 PM
Link de este comentario

20

Buscando cosas de estas me acordé de este post y por el camino he encontrado esto otro,

http://fightingforalostcause.net/misc/2006/compare-email-regex.php

[Comentario zrubavel: Gracias Hugo, es interesante que una validación tan absurda y empleada ni siquiera esté bien hecha y que haya tenido que revolver tanto para encontrar algo aceptable.]

Escrito por Hugo el 24 de Junio de 2008 a las 1:00 PM
Link de este comentario
Escribir un comentario



Sobre este artículo

Esta página contiene una única entrada escrita por zrubavel publicada el 13 de Enero 2008 7:04 PM.

La frase: Panem et circenses es el artículo anterior en este blog.

Efecto placebo es el siguiente artículo en este blog.

Encontrar contenido reciente en el índice general o mira en el archivo para encontrar todo el contenido.

Audiencia