0

我希望它捕捉到类似的东西somedomain.com/folder/path,但不是类似的东西domain.sub.other.com。到目前为止,我的正则表达式几乎是完整的,它只是没有筛选出多域 url:

^(.*)://(?!(.{2,3})\.(.*)(.{2,3})(.*)

有什么办法可以筛选出多个时期?

4

2 回答 2

0

而不是.{2,3},你想要这样的东西:[^.]{2,3}- 这从特定匹配中排除句点(无需转义,因为它在正则表达式的上下文中没有特殊含义)。总的来说,你会有类似的东西:

://[^.]+\.[^.]{2,3}(/.*)?

除非很明显,您这样做会丢失 *.info 之类的东西....

于 2012-05-21T16:10:53.197 回答
0

找到了一个适用于各种测试场景的解决方案:

^(.*)://([^.]+)\.([^(\?|/|\r|\n|\.)]+)((/|\?|$)+)(.*)$

在这里,第二组到最后一组与潜在的正斜杠、问号或字符串结尾匹配,与它之前的组一起工作,不允许包含“。”的匹配项。

所以最终的效果是它只匹配具有两部分域的 URL,例如“domain.com”,并且对字符串长度没有任何限制。

于 2012-05-23T20:05:23.827 回答