Php正则表达式,url验证,域名中的以下点有效



我在验证组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在同一个字符类中)匹配了所有内容,甚至是一行新行。

最新更新