如何从window.location对象中提取域名?

3

location.host - dandavis
嘿,感谢@dandavis的迅速回复,但我不想检索主机,我只需要域名,无论子域名或顶级域名如何。 - shekhardtu
2个回答

2

使用location.host并从中提取所需部分即可简单实现。以下是一个实用函数:

function extractDomainName(hostname) {
    var host = hostname;
    host = host.replace(/^www\./i, "");
    host = host.replace(/(\.[a-z]{2,3})*\.[a-z]{2,3}$/i, "");
    return host;
}

使用.replace()方法和regex从完整的hostname中提取域名并返回。

您可以在此处查看其工作原理。

演示:

function extractDomainName(hostname) {
  var host = hostname;
  host = host.replace(/^www\./i, "");
  host = host.replace(/(\.[a-z]{2,3})*\.[a-z]{2,3}$/i, "");
  return host;
}

var tests = ["www.google.com", "www.tutorialspoint.com", "somesite.gov.fr", "www.path.co.ltd"];

tests.forEach(function(hostname) {
  console.log(hostname);
  console.log(extractDomainName(hostname));
});


谢谢@chsdk,但我只需要域名,不需要主机。 例如: stackoverflow.com ==> stackoverflow - shekhardtu
我不明白,你能否请解释一下。 - cнŝdk
@shekhardtu 你需要使用 正则表达式string.replace() 来实现它,请看我的编辑。 - cнŝdk
这种过滤器的问题在于你无法确定要保留哪些点号:extractDomainName("secure.payments.google.co.uk") - dandavis
@dandavis,它会像预期的那样给你secure.payments.google。 :) - cнŝdk

1

使用位置对象的主机名,您可以在顶级域名之前检查域名。这也会忽略子域名。

var domain = window.location.hostname.match(/([a-z0-9-]*?)\.[a-z]{2,}$/)[1];

console.log(domain);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接