JavaScript趣题:从URL中提取域名

https://blog.csdn.net/esir82/article/details/53333056

给定一个URL字符串,如何解析它,并从中提取出域名?

如下所示:

[javascript]  view plain  copy
  1. domainName("http://github.com/carbonfive/raygun") == "github"   
  2. domainName("http://www.zombie-bites.com") == "zombie-bites"  
  3. domainName("https://www.cnet.com") == "cnet"  

大家都知道,URL的第一部分是协议名,这个可以有很多种,比如httphttps,甚至以后会新增更多的协议,因此如果把所有的协议名都拿过来匹配,可扩展性太差了。

但是,不管你是怎样的协议,这一段是必不可少的——"://"

而且往往,这段字符串后面紧接着的就是域名,我们可以做字符串截取。

下面的代码做了详细说明:

[javascript]  view plain  copy
  1.           
  2. function domainName(url){  
  3.     var sign = "://";  
  4.     var pos = url.indexOf(sign);  
  5.     //如果以协议名开头  
  6.     //如:http://github.com/  
  7.     if(pos >= 0){  
  8.         pos += sign.length;  
  9.         //截取协议名以后的部分  
  10.         //github.com/  
  11.         url = url.slice(pos);  
  12.     }  
  13.     //以小数点作分割  
  14.     var array = url.split(".");  
  15.     //如果是以3W开头,返回第二部分  
  16.     //如:www.github.com  
  17.     if(array[0] === "www"){  
  18.         return array[1];  
  19.     }  
  20.     //如果不是以3W开头,则返回第一部分  
  21.     //如:github.com/  
  22.     return array[0];  
  23. }  

这个方法只考虑了几种通用情况,有些情况,比如说有子域名,没有考虑。


 function domainName(url) {
        var sign = "://";
        var pos = url.indexOf(sign);
        //如果以协议名开头
        //如:http://github.com/
        if (pos >= 0) {
            pos += sign.length;
            //截取协议名以后的部分
            //github.com/
            url = url.slice(pos);
        }
        //以小数点作分割
        var array = url.split("/");


        if (array.length <= 1) {
            alert("url格式不正确,请以 /+后缀 结尾");
            return false;
        }
        if (array.length == 2) {
            if (array[1].trim().length==0) {
                alert("url格式不正确,添加后缀名结尾");
                return false;
            }
        }
        return true;
    }



猜你喜欢

转载自blog.csdn.net/zunguitiancheng/article/details/80191799