使用JavaScript从URL提取域名



我需要一个常规脚本/模式来从URL提取主域名。我有以下失败的尝试。

使用说我有这个链接1,需要提取没有子域(邮件(的主域名(Google.co.uk(。我制作了此脚本,它与.co.uk合作,但会失败,该网站具有一个顶级域名,例如:.com.com

是否有更好的方法从任何URL提取主域名?URL的构造如下:

https://(optional sub-domain)*(domain name with two or three top-level domain name)(optional forward slash followed by text)*

*参考零次或更多次。

var link1="https://mail.google.co.uk/link/link/link";
var url = new URL(link1);
var domain = url.hostname.split('.').slice(-3).join('.');
console.log("The domain name is: "+ domain);

在上述代码中,我希望:google.co.uk

它可以起作用,因为该链接在顶级域名(.co.uk(中具有两个部分,因此-3可以使用。但是我还需要代码来使用此链接:

var link1="https://mail.google.com/link/link/link";

我需要输出为: google.com

,但问题是代码产生:

mail.google.com

我只想要主要域名:google.com

编辑:一些预期的输出示例在这里:

1(在mail.google.co.uk中应该是:google.co.uk

2(在mail.google.com中应该是:google.com

3(在link.mail.google.com/link/link中应该是:google.com

4(在link.link2.mail.google.com中应该是:google.com

即。只是域名之后的无子域或链接的主要域名。顶级域名可以在(.com,.net,.org等(的FOM中,也可以是(.co.uk,.co.us等(的形式。如果是一部分或两个部分,则应捕获顶级域名(我的代码仅捕获两个部分(。

确保您是否想要

"mail.google.co.uk"

您可以只使用

url.host

,或者如果您想要标题,请使用

url.origin

欢呼!

最新更新