none
Expresion regular C# email RRS feed

  • Pregunta

  • hola a todos, no manejo mucho esto de expresiones regulares espero me puedan ayudar, tengo una a la que debo modificar:

    public static bool ValidarEmail(string email)
    {
        return email != null && Regex.IsMatch(email, "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@(([a-zA-Z]+[\\w-]+\\.){1,2}[a-zA-Z]{2,4})$");
    }

    Siempre ha funcionado pero resulta que apareció un correo xxxxxxxxxxxxxxxx@4life.com que no pasa la validación debido a que tiene un número (4) como se puede observar sin embargo es un mail válido.

    Gracias de antemano por su ayuda.


    lunes, 16 de octubre de 2017 20:06

Respuestas

  • El problema concreto del 4 se puede resolver cambiando [a-zA-Z] por [a-zA-Z0-9].

    Pero aún así tu expresión seguirá rechazando muchos correos que son válidos. Por ejemplo, un error que veo a primera vista es el {2,4} del final, que rechazará los TLD que tengan más de 4 caracteres (con los últimos cambios al sistema de dominios hay algunos que tienen hasta 6). Y si la parte de la izquierda de la @ contiene otra @ (debidamente escapada, claro está), también será rechazado. Por no hablar de muchos caracteres que son válidos y tu expresión no los permite (por ejemplo, { y } son válidos en un email, y de hecho Exchange los introduce en algunas cuentas de sistema).

    lunes, 16 de octubre de 2017 20:31
    Moderador