视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JavaScript趣题:从URL中提取域名
2020-11-27 20:26:04 责编:小采
文档


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

如下所示:

domainName("http://github.com/carbonfive/raygun") == "github" 
domainName("http://www.zombie-bites.com") == "zombie-bites" 
domainName("https://www.cnet.com") == "cnet"

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

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

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

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

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("."); 
 //如果是以3W开头,返回第二部分 
 //如:www.github.com 
 if(array[0] === "www"){ 
 return array[1]; 
 } 
 //如果不是以3W开头,则返回第一部分 
 //如:github.com/ 
 return array[0]; 
}

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

下载本文
显示全文
专题