給定一個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]; }
這個方法只考慮了幾種通用情況,有些情況,比如說有子域名,沒有考慮。
以上就是JavaScript趣題:從URL擷取網域的內容,更多相關內容請追蹤PHP中文網(www.php.cn)!