我需要一个通用脚本/模式来从URL中提取主域名。我有以下尝试失败。
让我们说我有这个link1并且需要在没有子域(邮件)的情况下提取主域名(google.co.uk)。我制作的此脚本与.co.uk
一起运行良好,但对于具有一个顶级域名的网站,例如:.com
和.com
,则会失败。
有没有更好的方法从任何网址中提取主域名? 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等)的形式,也可以是(.co.uk,.co.us等)的形式。如果顶级域名是一部分或两部分(我的代码只捕获两部分),则应捕获它们。
答案 0 :(得分:0)
当然,如果你想要
"mail.google.co.uk"
你可以使用
url.host
或者如果您想要标题,请使用
url.origin
喝彩!