之前项目要验证email的有效性,由于偷懒在网上抄了一个正则,如下
public static boolean isEmail(String string) {
if (string == null)
return false;
String regEx1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";//这个是没有用的
Pattern p;
Matcher m;
p = Pattern.compile(rule);
m = p.matcher(string);
if (m.matches())
return true;
else
return false;
}
本以为网上都是这样写的,应该没事,直到上线才发现问题。
要改成如下这样才行,上面的是无效的。
public static boolean isEmail(String string) {
if (string == null)
return false;
String regEx1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";//这个是没有用的
String rule = "[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?";
Pattern p;
Matcher m;
p = Pattern.compile(rule);
m = p.matcher(string);
if (m.matches())
return true;
else
return false;
}