last day (15 days later) » 

1:04 PM
He encontrado esta expresión que si me funciona
^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$
 
@AlbertoMier no coincide con un + en el usuario, ni con un mail terminado en .museum
@AlbertoMier armé la función con el código que te estaba pasando:
    public static boolean validarEmail(String email){
        final String regex = "(?:[^<>()\\[\\].,;:\\s@\"]+(?:\\.[^<>()\\[\\].,;:\\s@\"]+)*|\"[^\\n\"]+\")@(?:[^<>()\\[\\].,;:\\s@\"]+\\.)+[^<>()\\[\\]\\.,;:\\s@\"]{2,63}";

        return email.matches(regex);
    }
Funciona en Java sin ningún problema
@Alberto ¿Qué error te estaba dando?
 
ahora la compruebo
 
Espero que no sea nada rebuscado, ya que prácticamente no se nada de Android :-)
 
Con la expresión regular que te he indicado si valido este email: basta_con+un-ejemplo@un.sitio.museum
pero con la que me has indicado tu no
 
@AlbertoMier será que tenés la condición al revés? :-)
 
1:13 PM
Muchas gracias de todas formas
 
(que estás devolviendo true en vez de false y viceversa)
@AlbertoMier podés probar con basta_con+un-ejemplo@unsitio@museum
que es totalmente inválida, pero tu expresión la toma como válida
En cambio, con una buena expresión: regex101.com/r/UNhMeR/2
Estoy totalmente convencido de lo que te digo
Para empezar, es un desastre que no haya escapado los puntos en ^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$
Un punto coincide con cualquier caracter (excepto \n), haciendo que se pueda ingresar un caracter inválido en un mail
Por otro lado, sólo está aceptando letras, números y guiones, pero hay muchísimos más caracteres que son válidos en un mail
Por ejemplo % y + (que si los acepta es por ese error en no escapar los puntos)
En fin, es un error grave usar ese regex... está escrito por alguien que no entiende NADA de regex
Si en algún momento te interesa, avisame qué error te está dando la función que te pasé y lo vemos, pero te aseguro que no está relacionado al regex
 

last day (15 days later) »