我希望能够在缺少它的URL(参数之前)中添加一个尾部斜杠。这应该使用此过滤器完成:http://www.tuckey.org/urlrewrite/
换句话说:
/web/guest
应该成为/web/guest/
/web/guest?
应该
成为/web/guest/?
/web/guest/?
不应该
改变/web/guest?test=1
应该
成为/web/guest/?test=1
/web/guest/anything/
不应该
改变当URL没有参数时很容易,但是当有一些参数时我找不到匹配的正则表达式。
这是我能想到的(有例子和单元测试):https://regex101.com/r/qU3rP3/2:
^\/(.+\/[^\/]+?)(\?.*)?$
并替换为/$1/$2
。它没有产生预期的结果。
感谢您的帮助
答案 0 :(得分:2)
您可以使用
([^/?])$|/?([?].*)
替换为$1/$2
。
请参阅regex demo。
该模式包含两个备选方案,并将它们捕获到第1组和第2组中。然后,在替换模式中,我们使用$1
和$2
反向引用来引用这些捕获的值。
详细说明:
([^/?])$
- 匹配并捕获第1组中任何字符,但字符串末尾有/
或?
|
- 或/?
- 可选的(1或0)正斜杠([?].+)
- 匹配并捕获第2组文字?
,后跟除换行符以外的1个字符即使一个捕获组为空,替换仍然有效,因为非参与捕获组在匹配后填充了空字符串。