【发布时间】:2014-12-12 14:14:13
【问题描述】:
当 URL 的格式为“msgID”或“msg=ID”时,我想提取消息 ID 的第一个实例,但在“msg”和“ID”之间有任何其他字符时不提取
应该给我消息 ID 的测试字符串:
/forum/index.php/topic,101126.msg3826887.html#msg3826887
/forum/index.php?topic=101126.msg3826887#msg3826887
/forum/index.php?msg=3826887
应该失败的测试字符串:
/forum/index.php?msgrad3826887
/forum/index.php?msg,3826887
这是我的正则表达式:
forum\/index.php.+?msg=?([0-9]*)
但是,当我在Rubular 或Regexr 中测试它时,它们显示正则表达式成功匹配所有这些字符串。
应该失败的测试不会为捕获组提供任何结果,但在其他方面似乎匹配成功。
为什么会发生这种情况,我该如何修复我的正则表达式?
【问题讨论】:
-
你在哪里使用这个?重写规则? PHP 代码?
-
.+?是否导致它查找非空格字符的任意组合一次或多次? -
@nhahtdh Nginx 重写规则