2015-03-31 35 views
1

顶级域名我想从字符串如顶级域名:的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域。对于返回:

hello.domain.co.uk -> co.uk 

希望它是domain.co.uk

任何想法?

+0

,您可以检查 “域” 的最后一个索引.. ??? – 2015-03-31 12:29:30

+0

除非您知道域名,子域名或目标'co.uk'等,否则无法知道'subdomain.domain.com'和'domain.co.uk'之间的区别,它们在技术上与原来相同以数字和期间的位置等 – adeneo 2015-03-31 12:36:31

+0

[如何从JavaScript中获取顶级域名(基本域)]的可能重复(http://stackoverflow.com/questions/6449340/how-to-get-top- level-domain-base-domain-from-the-url-in-javascript) – Abhishek 2015-03-31 12:40:22

回答

-2
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)) 
+0

不适用于.com域。 – Scimonster 2015-03-31 12:30:08

+0

所以现在你遇到了'.org.uk'域名的问题。这只是不会工作。 – Scimonster 2015-03-31 12:42:54

+0

我现在同意,如果没有创建二级域名例外列表,这是不可能的 – jmgross 2015-03-31 12:46:04

0

我不认为这可能没有检查像“.co.uk”的具体扩展名。 至少它不可能只使用字符计数或计算点。

而且通过这样的回答证实:How to get domain name only using javascript?

关于上面提到的答案,注意顶级域名的名单,从那时起了很多发展,所以一定要更新您的列表,如果你想用这个答案的基地为您的最终解决方案。 新鲜的列表:List of TLD's from IANA.org

0

试试这也将努力获得顶级域名(Fiddle Link):

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