1. 程式人生 > >Java中利用正規表現判斷E-mail的範例程式碼

Java中利用正規表現判斷E-mail的範例程式碼

//用來判斷e-mail地址的一個範例程式碼 
//e-mail域名的正規表現
private static Pattern PATTERN_EMAIL_DOMAIN_PART = Pattern.compile("^([a-zA-Z0-9][a-zA-Z0-9_-]{0,61}[a-zA-Z0-9]|[a-zA-Z0-9])$");

//e-mailID的正規表現
private static Pattern PATTERN_EMAIL_LOCAL = Pattern.compile("^([a-zA-Z0-9_-][a-zA-Z0-9_//.-]*[a-zA-Z0-9_-]|[a-zA-Z0-9_-])$");

//e-mail最大長度
private static int EMAIL_MAX_LENGTH = 128;

public static boolean checkEmail(String email) {
	
	// 長度檢測
	if (email.length() > EMAIL_MAX_LENGTH) {
		return false;
	}

	// '@'個數檢測
	String token[] = tokenize(email, "@");
	if (token.length != 2) {
		return false;
	}

	// '.'個數檢測
	String local = token[0];
	String domain = token[1];
	token = tokenize(domain, ".");
	if (token.length <= 1) {
		return false;
	}

	// '.'位置檢測
	// ドメインは、63文字以下、先頭末尾が英數字、それ以外が英數字"-","_"
	for (int i = 0; i < token.length; i++) {
		if (PATTERN_EMAIL_DOMAIN_PART.matcher(token[i]).matches() == false) {
			return false;
		}
	}

	// ID的先頭和末尾文字串為英文、數字"-","_"、其他位置的文字串為英文、數字"-","_","."
	if (PATTERN_EMAIL_LOCAL.matcher(local).matches() == false) {
		return false;
	}
	return true;
}