online net example c# regex asp.net-mvc asp.net-mvc-4 email-validation

net - regex email c#



Validación de la dirección de correo electrónico en la aplicación C#MVC 4: con o sin usar Regex (6)

¡Es sorprendente que la cuestión de validar una dirección de correo electrónico aparezca continuamente en SO!

Puede encontrar una solución práctica a menudo mencionada aquí: Cómo encontrar o validar una dirección de correo electrónico .

Extracto:

La virtud de mi expresión regular anterior es que coincide con el 99% de las direcciones de correo electrónico en uso hoy en día. Toda la dirección de correo electrónico que coincide puede ser manejada por el 99% de todo el software de correo electrónico que existe. Si está buscando una solución rápida, solo necesita leer el siguiente párrafo. Si desea conocer todas las compensaciones y obtener muchas alternativas para elegir, siga leyendo.

Vea esta respuesta en SO para una discusión de los méritos del artículo en el enlace anterior. En particular, el comentario fechado el 2012-04-17 dice:

A todos los reclamantes: después de 3 horas experimentando todas las soluciones ofrecidas en esta discusión gigantesca, esta es LA ÚNICA solución de regex de Java buena que puedo encontrar. Ninguna de las cosas rfc5322 funciona en regex java.

Tengo una aplicación web MVC 4 y necesito ingresar y validar algunas direcciones de correo electrónico, sin enviar un correo electrónico a la dirección de correo electrónico del usuario.

Actualmente estoy usando la validación básica de correo electrónico de expresiones regulares con este patrón:

[RegularExpression(@"/A(?:[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:/.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)/Z", ErrorMessage = "Please enter correct email address")]

Aunque se trata de validar direcciones de correo electrónico, pasa [email protected] como una dirección de correo electrónico válida. Por el momento tengo una validación que requiere símbolos @ símbolos. Símbolos donde los símbolos pueden ser numéricos / alfabéticos y ._-.

Necesito más validación de correo electrónico estándar para mi aplicación MVC 4. ¿Cómo puedo hacer eso?


¿Por qué no usar simplemente el EmailAttribute ?

[Email(ErrorMessage = "Bad email")] public string Email { get; set; }


Ampliando la respuesta de Ehsan ...

Si está utilizando .Net framework 4.5, entonces puede tener un método simple para verificar la dirección de correo electrónico utilizando la clase EmailAddressAttribute en el código.

private static bool IsValidEmailAddress(string emailAddress) { return new System.ComponentModel.DataAnnotations .EmailAddressAttribute() .IsValid(emailAddress); }

Si está considerando REGEX para verificar la dirección de correo electrónico, lea:

Sabía cómo validar una dirección de correo electrónico hasta que leí el RFC por Phil Haack


Necesitas una expresión regular para esto. Mira here Si está utilizando .net Framework4.5, también puede usar this . Como está construido en .net Framework 4.5. Ejemplo

[EmailAddress(ErrorMessage = "Invalid Email Address")] public string Email { get; set; }


Regex:

[RegularExpression(@"^([a-zA-Z0-9_/-/.]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([a-zA-Z0-9/-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$", ErrorMessage = "Please enter a valid e-mail adress")]

O puedes usar solo:

[DataType(DataType.EmailAddress)] public string Email { get; set; }


No lo hagas

Use una expresión regular para una comprobación de validez rápida, algo como .@.. , pero casi todos los idiomas / marcos tienen mejores métodos para verificar una dirección de correo electrónico. Usa eso.

Es posible validar una dirección de correo electrónico con una expresión regular, pero es una expresión regular larga. Muy largo
Y al final no serás el más sabio. Solo sabrá que el formato es válido, pero aún no sabe si es una dirección de correo electrónico activa. La única forma de averiguarlo es enviando un correo electrónico de confirmación.