Javascript从字符串中获取顶级域
我想从以下字符串中获取顶级域:Javascript从字符串中获取顶级域,javascript,Javascript,我想从以下字符串中获取顶级域: domain.com -> domain.com subdomain.domain.com -> domain.com subdomain.domain.co.uk -> domain.co.uk 到目前为止,具有以下功能: function gdn(h) { return h.substring(h.lastIndexOf(".", h.lastIndexOf(".") - 1) + 1); } 问题是这不适用于co.uk域。报税表
domain.com -> domain.com
subdomain.domain.com -> domain.com
subdomain.domain.co.uk -> domain.co.uk
到目前为止,具有以下功能:
function gdn(h) {
return h.substring(h.lastIndexOf(".", h.lastIndexOf(".") - 1) + 1);
}
问题是这不适用于co.uk
域。报税表:
hello.domain.co.uk -> co.uk
希望它是domain.co.uk
有什么想法吗?如果不检查具体的扩展名,比如“.co.uk”,我认为这是不可能的。
function parseDomain(url) {
var elts = url.split('.');
var offset = 2;
if(elts[elts.length-2] == 'co') {
offset = 3
}
return elts.slice(elts.length-offset, elts.length).join('.')
}
var url = "subdomain.domain.co.uk"
console.log(parseDomain(url))
var url2 = "subdomain.domain.com"
console.log(parseDomain(url2))
至少,仅仅使用字符计数或点计数是不可能的
这一回答也证实了这一点:
关于上面提到的答案,请注意,TLD的列表从那时起已经增长了很多,因此,如果您想使用该答案作为最终解决方案的基础,请确保更新您的列表。
最新列表:试试这个,它可以获得顶级域名(): HTML代码:
<input type="text" id="url">
<br/>
<input type="button" value="Get Top Domain" id="getTopDomain"/>
jQuery('#getTopDomain').click(function() {
var regex = new RegExp(/\./g)
var text = jQuery('#url').val();
var count = text.match(regex).length;
if(count > 1) {
text = text.substring(text.indexOf('.')+1);
}
alert(text);
});
谢谢
~Chandan这个应该可以帮你:
你能检查一下“域”的最后一个索引吗?除非你明确知道域、子域或目标
co.uk
等,否则无法知道subdomain.domain.com
和domain.co.uk
之间的区别,在句点的数量和位置等方面,它们在技术上是相同的。因此,现在您在.org.uk
域方面遇到了问题。这是行不通的。我现在同意,不创建二级域例外列表是不可能的。如果一个人在没有国家二级域的TLD上注册co.[TLD]
,那么在另一个方向上你也会遇到问题(例如,foo.co.com
应该将co.com
作为其主要域,但您的函数目前提供foo.co.com
)。正如您所说,除非您以某种方式将国家域政策嵌入到您的函数中,否则这在理论上是不可能的。
var re = /([^.]+\.)?([^\.]+\..+)/;
var str = 'subdomain.domain.co.uk';
var m = str.match(re);
if (m.length > 2)
console.log(m[2]);