在不使用预定义的tld列表的情况下,有效地从url获取根域



我的问题很简单。例如,如何使用regex从域中删除tld,而不预先定义已知存在的所有可能的tld的列表。这似乎很简单,但我在stackoverflow和谷歌上都没有发现一个不使用列表的列表,或者它不适用于.co.uk或com.au等不同的tld,使用pop方法只是让它变得无用。为此,已经为该场景删除了http://www. or http://

google.com --> google 
google.co.uk --> google
stackoverflow.com --> stackoverflow

谢谢

这是不可能的(如果你关心子域)

如果你不关心子域:

domain=url.split(".").shift();

如果你关心子域,最正确的方法(大约80%正确)是从url中删除所有短的内容,然后选择最后一个:

domain=url.split(".").filter(e=>e.length>3).pop();
if(domain==undefined){
domain=url.split(".").pop();
}

如果使用account.db.de stadt.hamburg等,这将失败,但如果没有tld列表,这是不可能的。

最新更新