Cuando los usuarios crean una cuenta en mi sitio, quiero hacer una validación del servidor para que los correos electrónicos no acepten todas las entradas.
Enviaré una confirmación, como una forma de hacer una validación de apretón de manos .
Estoy buscando algo simple, no lo mejor , pero no demasiado simple que no valide nada. No sé dónde debe estar la limitación, ya que cualquier expresión regular no hará la validación correcta porque no es posible hacerlo con expresiones regulares.
Estoy tratando de limitar la complejidad visual y sintaxis inherente a las expresiones regulares, porque en este caso cualquiera será correcto.
¿Qué expresión regular puedo usar para hacer eso?
c#
regex
email-validation
eKek0
fuente
fuente
Respuestas:
fuente
Es posible escribir una expresión regular que solo acepte direcciones de correo electrónico que sigan los estándares. Sin embargo, hay algunas direcciones de correo electrónico que no siguen estrictamente los estándares, pero aún funcionan.
Aquí hay algunas expresiones regulares simples para la validación básica:
Contiene un carácter @:
Contiene @ y un punto en algún lugar después:
Tiene al menos un carácter antes de @, antes del punto y después de él:
Tiene solo una @, al menos un carácter antes de la @, antes del punto y después de él:
El usuario AmoebaMan17 sugiere esta modificación para eliminar los espacios en blanco:
Y por aceptar solo un período:
fuente
[email protected]
?^ [a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 -] +. [a-zA-Z0-9 -.] + $
fuente
Creo que este pequeño ajuste a la expresión de AmoebaMan17 debería evitar que la dirección comience / termine con un punto y también detener varios puntos uno al lado del otro. Intentando no volverlo complejo de nuevo mientras se elimina un problema común.
Parece estar funcionando (pero no soy RegEx-pert). Soluciona mi problema con los usuarios que copian y pegan direcciones de correo electrónico desde el final de las oraciones que terminan con un punto.
es decir: Aquí está mi nueva dirección de correo electrónico [email protected].
fuente
Elige tu opción.
Aquí está el que cumple con RFC 2822 Sección 3.4.1 ...
(?:[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])+)\])
Por si tienes curiosidad. :)
fuente