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 

解决方案 »

  1.   

    \\.com|\\.com\\.cn
    换成\\.com(\\.cn)?
      

  2.   

    (\\.com|(\\.com\\.cn))  这样呢?
      

  3.   

    哦哦,不对不对,因为可能还有.org的形式
    那这样:// 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);
    }
      

  4.   

    LZ的意思不久是
    www.google.com.cn匹配出的是.com而不是.com.cn吗?
      

  5.   

    我的意思 是匹配 .com.cn
      

  6.   

    //var reg = /^http://www.w.+.w+(.w+)?$/;//一级域名
    var reg = /^http://w+.w+.w+(.w+)?$/;//二级 域名
      

  7.   

    我感觉 你们没明白我的意思www.google.com.cn匹配 出 com.cn 来就是 顶级的域名后缀但是 顶级的域名后缀 还有com 所以 写的正则表达式 (\\.com|\\.com\\.cn) 有问题 但是我不想 改成 (\\.com\\.cn|\\.com) 因为还有很多这样的 容易出错我要匹配的 是顶级域名后缀 比如www.google.com.cn先判断有com.cn 吗 没有判断 cn