www.google.comwww.google.com.cn正则表达式 匹配 .com.com.cn 这个顶级域名部分
正则表达式 (Java): (\\.com|\\.com\\.cn)已知 要匹配的就是 域名形式现在这个正则表达式 有问题 www.google.com - .comwww.google.com.cn - .com
后者很明显不是我要的结果 我知道如果 把(\\.com|\\.com\\.cn) 变成 (\\.com\\.cn|\\.com) 肯定可以但是 有很多这样的顶级域名 比如(com\\.cn|cn|tel|mobi|net|org|asia|me|com|net\\.cn|org\\.cn|gov\\.cn|hk|tv|biz|cc|name|info)如果要改动的话很麻烦 且容易出错,求解决之道 ,其他不用正则的 最好用Java
正则表达式 (Java): (\\.com|\\.com\\.cn)已知 要匹配的就是 域名形式现在这个正则表达式 有问题 www.google.com - .comwww.google.com.cn - .com
后者很明显不是我要的结果 我知道如果 把(\\.com|\\.com\\.cn) 变成 (\\.com\\.cn|\\.com) 肯定可以但是 有很多这样的顶级域名 比如(com\\.cn|cn|tel|mobi|net|org|asia|me|com|net\\.cn|org\\.cn|gov\\.cn|hk|tv|biz|cc|name|info)如果要改动的话很麻烦 且容易出错,求解决之道 ,其他不用正则的 最好用Java
换成\\.com(\\.cn)?
那这样:// String url = "www.sina.com";
String url = "www.sina.com.cn";
String[] elements = url.split("[.]"); Set<String> domainNames = new HashSet<String>();
domainNames.add("com");
domainNames.add("cn");
domainNames.add("org");
domainNames.add("net");
domainNames.add("hk"); StringBuffer domainNameB = new StringBuffer();
for (int i = elements.length - 1, j = 0; i >= 0 && j <= 1; i--, j++) {
if(domainNames.contains(elements[i])) {
domainNameB.insert(0, elements[i] + ".");
} else {
break;
}
} String domainName = domainNameB.substring(0, domainNameB.lastIndexOf("."));
//print "com.cn"
System.out.println(domainName);
}
www.google.com.cn匹配出的是.com而不是.com.cn吗?
var reg = /^http://w+.w+.w+(.w+)?$/;//二级 域名