正则表达式问题 - 验证电子邮件地址 - Android

时间:2014-02-06 20:40:57

标签: android regex

为什么在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");
}

为什么这样做?我究竟做错了什么?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

试试这个:

boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher("any@e-mail.com").matches(); 

实际上,您提供的用于检查电子邮件地址的任何正则表达都是不够的,因为它具有巨大的可能性(现在甚至有超过3个字母的域名作为TLD ... )。

Android提供了这种方法,所以使用它们是一个好主意,可以省去头痛。