为什么在EditText小部件中输入电子邮件地址后,为了让EditText小部件中的Error消失,它需要命中空格和退格?这是我正在使用的源代码:
if (!Pattern.matches("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+(?:[A-Z {2}|com|org|net|gov|mil|biz|info|mobi|name|in|aero|jobs|museum)$", s)) {
et.setError("please enter a valid email address");
}
为什么这样做?我究竟做错了什么?任何帮助将不胜感激!
答案 0 :(得分:4)
试试这个:
boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher("any@e-mail.com").matches();
实际上,您提供的用于检查电子邮件地址的任何正则表达都是不够的,因为它具有巨大的可能性(现在甚至有超过3个字母的域名作为TLD ... )。
Android提供了这种方法,所以使用它们是一个好主意,可以省去头痛。