Javascript/Regex只用于查找没有子域的根域名

jam*_*ley 12 javascript regex dns

我进行了搜索,发现了很多类似的正则表达式示例,但不是我需要的.

我希望能够传入以下网址并返回结果:

  • www.google.com返回google.com

  • sub.domains.are.cool.google.com返回google.com

  • doesntmatterhowlongasubdomainis.idont.wantit.google.com 返回google.com

  • sub.domain.google.com/no/thanks返回google.com

希望有意义:)提前谢谢!-James

Tat*_*die 11

您不能使用正则表达式执行此操作,因为您不知道后缀中有多少个块.

例如,google.com的后缀为com.要从subdomain.google.com转到google.com,您必须使用最后两个区块 - 一个用于后缀,一个用于Google.

如果应用此逻辑subdomain.google.co.uk虽然你会结了co.uk.

您实际上需要从http://publicsuffix.org/这样的列表中查找后缀


sto*_*per 8

不要使用正则表达式,使用.split()方法并从那里开始工作.

var s = domain.split('.');
Run Code Online (Sandbox Code Playgroud)

如果您的用例相当狭窄,您可以根据需要检查TLD,然后根据需要返回最后2或3个段:

return s.slice(-2).join('.');
Run Code Online (Sandbox Code Playgroud)

它会使你的眼睛流血少于任何正则表达式解决方案.