我几乎肯定这个bug存在于路由定义中表达正则表达式模式的方式,但是再一次,它可以存在于我的模式中(我还是一个正则表达式noob,所以请原谅我)。在我的快速路线定义中,我试图匹配路线路径中的数字:
const router = express.Router()
// pattern: ignore first capture (/)
router.route(/^(?:\/)(\d+)$/)
.get(...callback)
目前,捕获的数字可以是任意长度。因此,当URL为http://localhost:8000/1234
时,事情正在按预期工作,除了未捕获完整数字的事实 - 当我在回调中记录请求参数时,我得到:{ '0', '4' }
。如您所见,我得到了最后一位数:4
的数字:1234
。出了什么问题?我在这里大力搔头。当我在regexr和节点REPL:/^(?:\/)(\d+)$/.exec('1234')[1] === '1234'
中测试我的正则表达式时,它似乎正确匹配。任何帮助/见解将不胜感激。感谢。
[编辑]:根据@Tolsee的建议,我将快递包从v 4.15.3
升级到v 4.15.5
(最新版本)。这似乎解决了这个问题;现在,我的正则表达式模式正在为这条路线工作。我猜测问题在于旧的快递包。