域名规则校验Java版本

1 篇文章 0 订阅
1 篇文章 0 订阅

/**
* 检查域名是否合法
* @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";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值