自己写了一个邮箱的判断,因为市面上的邮箱在复杂,用一些正则表达式判断不是很熟练,所以自行写了一个判断留作考察:)
/**
* 判断帐号是否为Email 鉴于现在Email帐号前缀和后缀复杂性,所以判断{@ 和 .}是否存在以及其的位置
*
* @param acc
* @return
*/
public static boolean isEmail(String acc) {
if (acc == null || acc.length() < 5) {
// #如果帐号小于5位,则肯定不可能为邮箱帐号eg: x@x.x
return false;
}
if (!acc.contains("@")) {// 判断是否含有@符号
return false;// 没有@则肯定不是邮箱
}
String[] sAcc = acc.split("@");
if (sAcc.length != 2) {// # 数组长度不为2则包含2个以上的@符号,不为邮箱帐号
return false;
}
if (sAcc[0].length() <= 0) {// #@前段为邮箱用户名,自定义的话至少长度为1,其他暂不验证
return false;
}
if (sAcc[1].length() < 3 || !sAcc[1].contains(".")) {
// # @后面为域名,位数小于3位则不为有效的域名信息
// #如果后端不包含.则肯定不是邮箱的域名信息
return false;
} else {
if (sAcc[1].substring(sAcc[1].length() - 1).equals(".")) {
// # 最后一位不能为.结束
return false;
}
String[] sDomain = sAcc[1].split("\\.");
// #将域名拆分 tm-sp.com 或者 .com.cn.xxx
for (String s : sDomain) {
if (s.length() <= 0) {
System.err.println(s);
return false;
}
}
}
return true;
}