您的位置:首页 > 其它

不用正则表达式判断邮箱地址是否合法

2017-03-07 20:21 549 查看
package demo3_7;

public class CheckEmail {

/*
*
用Scanner,String判断邮箱地址是否符合规则
有且只有一个@
首字母必须是字母/_
其他字母,字母/数字/_
@后是域名,长度1--10之间
域名后缀com/com.cn/cn
*/
public static void main(String[] args) {
String[] emails = new String[]{
"dsfadd@fds@df.com.cn",
"sdffd#s@com.com",
"dsfdscom.com.cn",
"213dsfds@.cn",
"@wee.cn",
"  @wee.cn@",
"a12345@163.com"
};

for(int i=0; i<emails.length; i++) {
//判断@符号
if(!checkAt(emails[i])) {
System.out.println(emails[i]+"--@符号不合法");
continue;
}
//判断首字母
if(!checkFirst(emails[i])) {
System.out.println(emails[i]+"--首字母不合法");
continue;
}

//判断其他的字母,后缀除去
if(!checkOther(emails[i])) {
System.out.println(emails[i]+"--其他字母不合法");
continue;
}

//@后是域名,长度1--10之间
if(!checkDomain(emails[i])) {
System.out.println(emails[i]+"--域名长度不合法");
continue;
}

//判断后缀
if(!checkEnd(emails[i])) {
System.out.println(emails[i]+"--后缀不合法");
continue;
}
System.out.println("合法的邮箱地址:"+emails[i]);
}

}

/**
* 检查.到最后的子字符串
* @param string
* @return
*/
private static boolean checkEnd(String email) {
boolean flag = false;
String subString = email.substring(email.indexOf(".")+1);
if("com".equals(subString)||"com.cn".equals(subString)||"cn".equals(subString)) {
flag = true;
}
return flag;
}

/**
* 检查域名长度
* @param string
* @return
*/
private static boolean checkDomain(String email) {
boolean flag = false;
//.在@后
if(email.indexOf(".")>email.indexOf("@")) {
//@和.之间的子字符串的长度<=10
String subString = email.substring(email.indexOf("@")+1,email.indexOf("."));
if(subString.length()<=10) {
flag = true;
}
}
return flag;
}

/**
* 判断其他字母
* 	切割子字符串,0到第一个.的位置
* @param string
* @return
*/
private static boolean checkOther(String email) {
boolean flag = true;
if(email.indexOf(".")>0) {
String subString = email.substring(0, email.indexOf("."));
System.out.println("subString:"+subString);

char[] chars = subString.toCharArray();
//跳过首字母

for(int i=1; i<chars.length; i++) {
int a = chars[i];
//跳过@符号
if(a==64) {
continue;
}
if(!((a>=65&&a<=90)||(a==95)||(a>=97&&a<=122)||(a>=48&&a<=57))) {
flag = false;
}
}
} else {
flag = false;
}
return flag;
}

/**
* 判断首字母,是字母或者下划线
* @param string
* @return
*/
private static boolean checkFirst(String email) {
boolean flag = false;
char c = email.charAt(0);
int i = c;
if((i>=65&&i<=90)||(i==95)||(i>=97&&i<=122)) {
flag = true;
}

return flag;
}
/**
* 检查email地址中有且只有一个@符号,并@前后都应该有内容
* @param string
* @return
*/
private static boolean checkAt(String email) {
boolean flag = true;
if(email.indexOf("@")>0&&(email.indexOf("@")==email.lastIndexOf("@"))) {
//只有一个@符号
String[] strs = email.split("@");
for (int i = 0; i < strs.length; i++) {
if(strs[i].trim().length()==0) {
flag = false;
break;
}
}
} else {
flag = false;
}
return flag;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: