Javascript 需要正则表达式来捕获二级域(SLD)

Javascript 需要正则表达式来捕获二级域(SLD),javascript,regex,Javascript,Regex,我需要一个正则表达式来捕获给定的URL SLD 示例: jack.bop.com -> bop bop.com -> bop bop.de -> bop bop.co.uk -> bop bop.com.br -> bop 所有防喷器:。所以这个正则表达式需要忽略CCTLD、GTLD和CCSLD。后者是困难的部分,因为我想让正则表达式尽可能不复杂 第一项任务是先移除CCTLD,然后移除GTLD,然后检查是否存在CCSLD,如果存在,将其移除 非常感谢您的帮助: -

我需要一个正则表达式来捕获给定的URL SLD

示例:

jack.bop.com -> bop
bop.com -> bop
bop.de -> bop
bop.co.uk -> bop
bop.com.br -> bop
所有防喷器:。所以这个正则表达式需要忽略CCTLD、GTLD和CCSLD。后者是困难的部分,因为我想让正则表达式尽可能不复杂

第一项任务是先移除CCTLD,然后移除GTLD,然后检查是否存在CCSLD,如果存在,将其移除

非常感谢您的帮助:

-

如果有帮助,CCTLD可通过以下方式匹配:

\.([a-z]{2})$
\.([a-z]{3-6})$
与GTLD匹配的是:

\.([a-z]{2})$
\.([a-z]{3-6})$

幸运的是,这是两种相互排斥的模式。

从技术上讲,“.co.uk”是“bop.co.uk”中的第二级域。你似乎要求的是开放给公众注册的域名的最高级别部分,你想剥离注册者的域名

调用不需要公共后缀的suffx:

公共后缀是由公共注册表控制的域,例如com、co.uk和pvt.k12.wy.us

Mozilla维护着一个新的应用程序

要创建正则表达式,必须枚举所有公共后缀。您应该对它们进行排序,以便作为其他元素后缀的元素稍后出现。一种简单的方法是按长度递减排序。看来撤销Mozilla的列表也就足够了

在此之后,正则表达式非常简单:

(.+\.)?([^.]+)\.(?:<suffixes>)$
有一些方法可以通过压缩常用后缀来缩短这个过程,尽管这会使正则表达式及其计算过程更加复杂。例如:

(?:gov\.|ac\.|co\.|)uk|com|org|net|us

从技术上讲,“.co.uk”是“bop.co.uk”中的第二级域。你似乎要求的是开放给公众注册的域名的最高级别部分,你想剥离注册者的域名

调用不需要公共后缀的suffx:

公共后缀是由公共注册表控制的域,例如com、co.uk和pvt.k12.wy.us

Mozilla维护着一个新的应用程序

要创建正则表达式,必须枚举所有公共后缀。您应该对它们进行排序,以便作为其他元素后缀的元素稍后出现。一种简单的方法是按长度递减排序。看来撤销Mozilla的列表也就足够了

在此之后,正则表达式非常简单:

(.+\.)?([^.]+)\.(?:<suffixes>)$
有一些方法可以通过压缩常用后缀来缩短这个过程,尽管这会使正则表达式及其计算过程更加复杂。例如:

(?:gov\.|ac\.|co\.|)uk|com|org|net|us