正则表达式问题-验证电子邮件地址-Android
为什么在我在EditText小部件中键入电子邮件地址后,需要我点击空格和退格,以便错误在EditText小部件中消失?以下是我正在使用的源代码:正则表达式问题-验证电子邮件地址-Android,android,regex,Android,Regex,为什么在我在EditText小部件中键入电子邮件地址后,需要我点击空格和退格,以便错误在EditText小部件中消失?以下是我正在使用的源代码: 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|m
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");
}
为什么要这样做?我做错了什么?任何帮助都将不胜感激 试试这个:
boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher("any@e-mail.com").matches();
实际上,您可以提供的任何用于检查电子邮件地址的regexp都是不够的,因为这有一组巨大的可能性(现在甚至有超过3个字母的域作为TLD…)
Android提供了这种方法,所以最好使用它们,省去头痛。试试以下方法:
boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher("any@e-mail.com").matches();
实际上,您可以提供的任何用于检查电子邮件地址的regexp都是不够的,因为这有一组巨大的可能性(现在甚至有超过3个字母的域作为TLD…)
Android提供了这种方法,所以最好使用它们,省去麻烦。
错误
-什么错误?当未输入无效电子邮件地址时,EditText旁边显示的错误。这就是et.setError()方法的作用,它显示错误。您的正则表达式[这应该可以解决这个问题。实际上,这并没有解决在输入电子邮件地址后必须输入空格和退格以消除错误的问题。错误
-什么错误?当未输入无效电子邮件地址时,在编辑文本旁边显示的错误。这就是et.setError()方法的作用是显示错误。您的regex[中似乎有一个不相关的打字错误,应该可以解决该问题。实际上,这并没有解决在输入电子邮件地址后必须键入空格和退格以消除错误的问题。