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

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;
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值