Hay email regexp questions apareciendo up aquí, y estoy sinceramente desconcertado por qué las personas están usando estas insanely obtuse expresiones coincidentes en lugar de un analizador muy simple que divide el correo electrónico en los tokens de nombre y dominio, y luego valida esos contra los caracteres válidos permitidos para el nombre (no se puede hacer más comprobaciones en esta parte) y los caracteres válidos para el dominio (y supongo que podría agregar la verificación de todos los TLD del mundo y luego otro nivel de dominios de segundo nivel para países con tales (es decir, com.uk)).¿Por qué las personas usan la expresión regular para el correo electrónico y otras validaciones complejas?
El problema real es que los tlds y slds siguen cambiando (contrariamente a la creencia popular), por lo que debe actualizar la expresión regular si planea hacer todo este control de alto nivel cuando los servidores de nombres raíz envían un cambio.
¿Por qué no tener un módulo que simplemente valida los dominios, que extrae de una base de datos, o un archivo plano, y opcionalmente verifica el DNS para los registros coincidentes?
Estoy hablando en serio, ¿por qué todos están tan interesados en inventar la expresión regular perfecta para esto? No parece ser una solución adecuada al problema ...
Convencerme de que no solo es posible hacerlo en expresiones regulares (y satisfacer a todos), sino que es una solución mejor que un analizador/validador personalizado.
-Adam
No tengo idea de por qué esto se revocó; eso parece una explicación perfecta de por qué las personas (incorrectamente) caen en la trampa de la expresión regular. +1 de mí ... –
Entonces, para parafrasear, "Cuando un programador tiene un problema, ella piensa," ¡Usaré una expresión regular! "Ahora el programador tiene dos problemas". –
Aunque estoy familiarizado con la cita de MJD, no me gusta su implicación de que las expresiones regulares siempre empeoren su problema. Son una buena opción en muchos casos, simplemente no esta. –