Buenas!
Estoy intentando que cuando se escriba un email en un EditText, un TextView diga si es valida o no., De momento tengo esto:
Código:
final EditText textMessage = (EditText)findViewById(R.id.textMessage);
final TextView text = (TextView)findViewById(R.id.text);
textMessage.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (textMessage.getText().toString().matches("[a-zA-Z0-9._-]+@[a-z]+.[a-z]+") && s.length() > 0)
{
text.setText("E-mail válido");
}
else
{
text.setText("E-mail no válido");
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
Como podéis ver, la expresión:
textMessage.getText().toString().matches("[a-z]+@[a-z]+.[a-z]+") dice que si la variable textMessage (que es el contendio del EditText) contiene cualquier combinacion de la 'a' a la 'z' seguido de un '@' luego seguido de cualquier combinacion de la 'a' a la 'z' seguido de un punto y luego otra vez cualquier combinacion de la 'a' a la 'z', es decir, un EMAIL COMPLETO, el TextView mostrará 'E-mail válido'.
Pero ahora me encuentro con el problema de que justo después de la '@', cuando inserto el tercer caracter, me sale que el email es válido, sin haber llegado al '.'
Alguien puede tener idea de lo que puede ser? Gracias por todo!
SOLUCIONADO: [a-zA-Z0-9._-]+@[a-z]+\\.[a-z]+