我想验证通过edittext输入的电子邮件地址。我已经看过使用Pattern的一般电子邮件验证,但我有一个带有效电子邮件域的Arraylist。我想仅从此域列表中验证电子邮件地址。
我已经尝试了很多,但无法使其发挥作用。请帮助:)
当前代码:
public boolean isEmailValid(String email) {
String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
+ "\\.(abc.com|abc.co|abc.nz|abc.org)$";
Pattern pattern = Pattern.compile(regExpn, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
谢谢
一般电子邮件验证的原始正则表达式:
String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
+ "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
+ "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
+ "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
+ "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
+ "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$";
答案 0 :(得分:1)
尝试
(abc\\.com|abc\\.co|abc\\.nz|abc\\.org)
而不是
\\.(abc.com|abc.co|abc.nz|abc.org)
\。字面意思是一个点而不是每个字符"。 \\。需要Java来逃避反斜杠以获得\。作为正则表达式。
编辑:删除\\。在前面并且逃避域点就足够了,正则表达式和样本更新了:
String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
+ "(abc\\.com|abc\\.co|abc\\.nz|abc\\.org)$";
所以
System.out.println(isEmailValid("yasd@abcXcom"));
System.out.println(isEmailValid("yasd@abc.com"));
System.out.println(isEmailValid("yasd@abc.co"));
System.out.println(isEmailValid("yasd@abc.org"));
System.out.println(isEmailValid("yasd@x"));
带来
false
true
true
true
false