【发布时间】:2016-07-26 15:33:44
【问题描述】:
我正在尝试使用 JQuery 在我的 chrome 扩展中使用任何网站的名称(只是一个没有任何子域名的域名)。在大多数情况下,我都能找到它。但我在少数极端情况下失败了。这是我到目前为止所做的。
host_url = window.location.hostname;
这只会给我主机名剥离页面 url、slug 或参数
https://ap2.salesforce.com/_ui/core/chatter/ui/ChatterPage ->
ap2.salesforce.com
http://go.sap.com/support.html -> go.sap.com
http://www.beaf.com/ -> beaf.com
http://www.digitalclicks.co.uk -> digitalclicks.co.uk
但是我怎样才能只获得域名,因为要删除子域,我可以拆分它并获得第二个元素,这会给我salesforce, sap, beaf
if (full_domain.split(".").length > 2){
domain_name = full_domain.split(".")[1]; // handle the subdomain ie. http://go.sap.com
}else{
domain_name = full_domain.split(".")[0]; //for no subdomain www.beaf.com
}
但是digitalclicks.co.uk 失败了,因为这里的域名是第一位的。我必须找到一种通用的方法来解决这个问题。
我怎样才能为所有顶级域做到这一点??
【问题讨论】:
-
看起来你误解了什么是“顶级域”——它只是最右边的部分——在你的例子中它是“com”和“uk”,带有“co.uk”是二级域名。 en.wikipedia.org/wiki/List_of_Internet_top-level_domains
-
就网址而言,您的示例中的 uk / com 是顶层,beaf / sap / salesforce / co 是第二级。因此,您的 digitalclicks 实际上是一个子域。只是一些二级域名是为/每个国家/地区的特定用途保留的。
-
您可以通过从 host_url 中删除顶级域 / url 扩展名来获得它。(删除 .com、.co.uk 等)。现在字符串的最后一部分(由'.'分割)将是你想要的字符串
-
这些站点是否只有
.com和.co.uk站点?如果是,请使用此正则表达式:(\w+)(?=\.co\.uk|\.com) -
感谢@freedomn-m 的信息,不,@Druzion,我必须让它适用于网络上的所有网站(大部分)。并且可以有多个第一级和第二级域的组合,所以我必须让两个案例工作。 1) 如果现在是第二级域,则只需拆分并获得与
go.sap.com相同的结束元素 2) 如果存在第二级域,则拆分后的用户第一个元素。所以它应该适用于 co.uk、co.in、co.en 或任何其他组合(如果存在)。
标签: javascript regex url