我进行了搜索,找到了很多类似的正则表达式示例,但并不完全符合我的需要。
我希望能够传入以下urls并返回结果:
希望这是有意义的:)预先感谢!-James
发布于 2010-09-21 23:46:02
您不能使用正则表达式来实现这一点,因为您不知道后缀中有多少块。
例如,google.com的后缀为com。要从subdomain.google.com到google.com,你必须使用最后两个街区--一个是后缀,另一个是谷歌。
但是,如果将此逻辑应用于subdomain.google.co.uk,则最终会得到co.uk。
实际上,您需要从像http://publicsuffix.org/这样的列表中查找后缀
发布于 2010-09-28 22:23:55
不要使用regex,使用.split()方法并在那里工作。
var s = domain.split('.');如果用例相当狭窄,则可以根据需要检查TLD,然后酌情返回最后的2或3段:
return s.slice(-2).join('.');它会让你的眼睛出血比任何药水都少。
发布于 2010-08-09 16:11:43
我对此没有做太多的测试,但如果我理解你的要求,这应该是一个不错的起点.
([A-Za-z0-9-]+\.([A-Za-z]{3,}|[A-Za-z]{2}\.[A-Za-z]{2}|[A-za-z]{2}))\b编辑:
为了澄清,它正在寻找:
一个或多个字母数字字符或破折号,后面跟着一个文字点
然后三件事之一。
在结尾处,单词边界(\b)表示字符串、空格或非单词字符的结尾( regex单词字符通常是alpha-数字和下划线)。
正如我所说,我没有做太多的测试,但这似乎是一个合理的起点。您可能需要尝试并对其进行调优,即使这样,您也不太可能获得100%的测试用例。有一些考虑因素,比如Unicode域名和各种各样的technically-valid-but-you'll-likely-not-encounter-in-the-wild东西,这些都会给您带来这样一个简单的正则表达式,但是这可能会让您了解到90%+的存在方式。
https://stackoverflow.com/questions/3439863
复制相似问题