使用javascript

时间:2018-03-29 12:37:53

标签: javascript regex url

我需要一个通用脚本/模式来从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等)的形式。如果顶级域名是一部分或两部分(我的代码只捕获两部分),则应捕获它们。

1 个答案:

答案 0 :(得分:0)

当然,如果你想要

"mail.google.co.uk"

你可以使用

url.host

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

url.origin

喝彩!