欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

域名规则校验Java版本 博客分类: java域名domian javadomain域名

程序员文章站 2024-03-19 23:41:22
...
	/**
	 * 检查域名是否合法
	 * @param domain
	 * @return 返回"LEGAL"成功
	 * 其余就返回不合法消息
	 */
	public static String domainCheckLegal(String domain){
		Pattern p = null;
		Matcher m = null;
		boolean b = false;
		String str = null;
		
		//可以包含中文、字母a-z(大小写等价)、数字0-9或者半角的连接符"-","-"不能放在开头或结尾
		String reg ="^(?!-)(?!.*?-$)[-a-zA-Z0-9\\u4e00-\\u9fa5]*$";

		p = Pattern.compile(reg);
		m = p.matcher(domain);
		b = m.matches();
		
		if(!b){
			return "不符合域名注册规定";
		}
		
		str = m.group();	

		
//		if(str.length()>=3){
//			if(str.substring(2,3).equals("-")){
//				return " “-”符号不能出现在第三和第四位 ";
//			}
//		}
//		if(str.indexOf("-")==2||str.indexOf("-")==3){			
//			return " “-”符号不能出现在第三和第四位 ";
//		}
		
		/*
		reg = "[\\u4e00-\\u9fa5]";//中文必须有1个
		p = Pattern.compile(reg);
		m = p.matcher(str);
		if(!m.find()){
			return "必须有一个中文";
		}
		*/
		
		
		reg = "^[\\u4e00-\\u9fa5]+$";//纯汉字必须大于1位
		p = Pattern.compile(reg);
		m = p.matcher(domain);
		b = m.matches();
		if(b){
			String chinese = m.group();	
			if(chinese.length()<2||chinese.length()>20){
				return "纯中文必须大于1个小于21个";
			}
		}else{
			//判断punycode长度
			if(str.length()<3){
				return "长度必须大于2!";
			}
			
			//如果第一位、二位不是中文,就判断第三、四位是否是“-”
			String str1 = str.substring(0,3);;
			String reg1  ="^[-a-zA-Z0-9]*$";
			p = Pattern.compile(reg1);
			m = p.matcher(str1);
			b = m.matches();

			if(b){
				if(str.indexOf("-")==2||str.indexOf("-")==3){			
					return " “-”符号不能出现在第三和第四位 ";
				}
			}
			//长度为63位
//			str = Punycode.encode(str);//转换成punycode 不用转化
//			if(str.length()>59){
//				return "您输入的域名过长!";
//			}
			
			//判断输入的域名是否超长
			int valueLength = 0;
			String chinese = "[\u4e00-\u9fa5]";  
			for(int i=0;i<str.length();i++){
				String temp = str.substring(i,i+1);
				if(temp.matches(chinese)){
					valueLength += 2;
				}else{
					valueLength++;
				}
			}
			if(valueLength>63){
				return "您输入的域名长度大于63位";
			}
		}
		return "LEGAL";
	}