【发布时间】:2018-07-19 14:36:14
【问题描述】:
我想在 nodejs express 路由路径中使用一个超级简单的过滤器。参数必须是 word1 或 word2。 测试于:https://forbeslindesay.github.io/express-route-tester/
带表达式:test/:gender(\b(word1|word2)\b)
路径:test/word2
而且一切正常。 "路径匹配路线"
但在代码中:
router.get('^/test/:gender(\b(word1|word2)\b)', function (req, res, next){//something})...;
我得到了 404(从 express 重定向,如果参数不正确,应该如此!)。
注意 1:删除正则表达式字符串,它可以工作。
注 2:我做的另一个过滤器设法使它工作。它必须像:“word1-word2[-moreWords]。我用
实现了它router.get('^/test/:user_name(*[a-zA-Z0-9][-]*[a-zA-Z0-9])', function (req, res, next) {//something});
并且工作没有问题。
注 3:我也对其进行了测试(我先将它们写在:)https://regex101.com/,当然,它们也可以工作。
那我做错了什么?
【问题讨论】:
-
您可能在 express 中缺少配置,请向我们提供端口、上下文等 express 配置
-
试试
'^/test/:gender(word1|word2)\\b'或'^/test/:gender(word1|word2)\b' -
@WiktorStribiżew 成功了!与 \\b!十分感谢!现在请教我,为什么它适用于快速路由测试而不是代码?这只是一个例子,但我将使用许多正则表达式来防止错误/恶意插入,其中一些更复杂。关于如何/在哪里编写和测试它们以便它们也可以在代码中工作的任何提示?附言你能把它写成回复,这样我就可以结束这个问题了吗?
-
@BasilBattikhi 端口可以影响正则表达式吗?如果端口错了,我会在任何东西上得到浏览器 404(不是 express - 因为它应该),对吧?
-
@SharpBCD 我不这么认为,但你认为你可能会访问不同的端口