我在验证组2(子域和扩展)时遇到问题。
我的正则表达式:/^(http:[/]{2})([wd-_.]+)(/(?:[/wW]+)?)?$/
发布于:([wd-_.]+)
问题:http://www.....google....com/stuff是有效的,我试过做[wd-_][(?<!.).(?!.)]+
,但遗憾的是它不起作用。
如果.
在后面,或者.
前面有.
,那么regex将返回false,我该怎么做呢。
https://regex101.com/r/fS9dG7/10
您可以使用负前瞻:
~^https?:/{2}(?!.*?..)([wd.-]+)(/.*)?$~
RegEx演示
顺便说一句,在PHP中,您还可以使用parse_url
函数来解析URL。
(?!.*?..)
是将不允许2个点的负前瞻。
您可以使用以下版本的正则表达式:
^(http:[/]{2})((?![^/]*?.{2}[^/]*?)[wd-_.]+)(/(?:[/w]+)?)?$
问题是W
(与w
在同一个字符类中)匹配了所有内容,甚至是一行新行。