PCRE正则表达式前瞻

时间:2018-02-23 10:41:43

标签: regex preg-match pcre

我无法让PCRE前瞻正常工作,感谢帮助,我发现很难解释,但在这里我们去,以此模式为例:

/^\/page(\/?[a-z0-9\.\_\-]+)*\/?$/i

匹配:

  • /页
  • /页/
  • /页/ ABC / DEF /

哪个好,但这也匹配' / page abcd '这应该是错的。所以基本上对于URI尾随" /"应该是可选的,除非有其他[a-z0-9\.\-\_]*

当我知道自己做错了时,我无助地试了^\/page(?=(\/)(\/?[a-z0-9\.\_\-]+)*|(\/)?)$

1 个答案:

答案 0 :(得分:1)

您可以通过在量化捕获中.之后删除_量词来强制执行字母,数字,-?/的存在组。此外,您可以使用\w代替[a-zA-Z0-9_]来缩短模式。非捕获组也更合适,因为您不需要捕获repeated capturing group的值(将(替换为(?:)。

使用

/^\/page(?:\/[\w.-]+)*\/?$/i
            ^ 

请参阅regex demo