我正在与一个正则表达式做斗争,我希望匹配路径的所有“有效”变体。
我对有效的定义是,它可以后面跟着一个可选的斜杠,以及可选的查询字符串或单个'?
它需要在PHP和JavaScript中都能工作,所以肯定/消极的观点是不可能的。
这里有一个可以修补的起点,http://regexr.com/3drov
在撰写本文时,我已经得到了^\/page-title\/?(?=\?).*$,我认为\/?将允许我匹配前两行,作为一个可选的斜杠。但我想我现在有点糊涂了。
我尝试了一个条件(?(?=)then|else)类型,我认为它在JS中是支持的,但是从regexr.com那里得到了一个语法错误。
所以,任何帮助都是非常感谢的。谢谢!
它们应该与输入: /page-title匹配。
/page-title
/page-title/
/page-title?
/page-title/?
/page-title?foo
/page-title/?foo=bar这些不应该
/page-title/foo/
/page-title-foo-bat更新
我没有意识到JavaScript不支持传统的条件语法。在阅读了这篇文章(我想模仿javascript regex中的条件词。)之后,我似乎让它与^\/page-title\/?((?=\?).*|)$一起工作
将更新保存到这里进行测试:http://regexr.com/3drq0
发布于 2016-07-21 05:03:42
也许是这样:
^\/page-title\/?(\?.*)?$启动/page-title
可选/
可选(?后面跟着任何东西或没有)
结束
http://regexr.com/3drpb
发布于 2016-07-21 04:25:33
我在积极的展望中使用了一个负的前瞻性,用一个额外的\来否定任何选项,检查这个选项对你是否正确:^(?=\/page-title\/?\??(?!(.+\/)|-)).+。
发布于 2016-07-21 04:45:12
这应该可以做到:
^\/page-title[\/\?]?(\?[^\/]*)?$
或
^\/page-title(\/|\?)?(\?[^\/]*)?$
https://stackoverflow.com/questions/38494677
复制相似问题