2012-07-24 16 views
6

Duplicar posible:
Validate email address in Javascript?¿Cuál es la expresión regular menos mala para rechazar direcciones de correo electrónico definitivamente inválidas?

Yo sé que no hay manera de validar una dirección de correo electrónico utilizando solamente expresiones regulares, pero creo que debería ser capaz de rechazar algunos obviamente no válidos en Para ayudar a los usuarios amigables que por error ingresaron algo diferente, como su nombre o contraseña en el campo de la dirección de correo electrónico. Por lo tanto, no quiero rechazar ninguna dirección de correo electrónico válida, pero me gustaría rechazar tantos formatos de correo electrónico no válidos como sea posible con solo una expresión regular. Pero creo que cualquier javascript/jquery/... estaría bien también.

Esto es lo que tengo hasta ahora:

^[email protected]+\..+$ 

Sí, no hay expresiones regulares para la validación real, pero que debería haber alguna para el rechazo. No, esto no evitará que nadie ingrese direcciones falsas. Sí, aún debe enviar un correo electrónico de confirmación para validarlo de verdad.

La regex anterior se utilizará desde javascript.

-

En vez de ello .NET .NET dejar que validar el formato de correo electrónico utilizando

try 
    { 
     var mailAddress = new MailAddress(possibleMailAddress); 
    } 

y si bien, comprobar los registros DNS de la parte del dominio para ver si puede haber una servidor de correo electrónico Solo si los registros DNS indican claramente que no puede haber un servidor de correo electrónico o si no existe tal dominio, entonces la dirección de correo electrónico es rechazada. Luego guarde en caché algunos de los resultados para acelerar las búsquedas futuras.

Aún así, tengo que enviar mensajes de correo electrónico de confirmación de la validación ...

+3

creo que tienes una regex sensible aquí. Aunque hay direcciones sin ningún punto en ellas, probablemente sean bastante raras. –

+0

Acepto que esta es una expresión regular bastante sensata para un sitio web público. También es posible que desee considerar [esta respuesta] (http://stackoverflow.com/a/46181/960195) a la pregunta relacionada pero no es lo mismo "¿Validar la dirección de correo electrónico en Javascript?" –

+0

Mucha discusión de diferentes grados de comprobación utilizando una expresión regular aquí: http://stackoverflow.com/questions/46155/validate-email-address-in-javascript. Me parece una pregunta duplicada. – jfriend00

Respuesta

4

La norma oficial RFC 2822 describe la sintaxis que las direcciones de correo electrónico válidas con esta expresión regular:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) 
Cuestiones relacionadas