代码之家  ›  专栏  ›  技术社区  ›  SharpBCD

nodejs express regex路径:在测试中工作,而不是在代码中工作。我做错了什么?

  •  2
  • SharpBCD  · 技术社区  · 7 年前

    我想在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:删除regex字符串,它可以工作。

    注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/ 当然,它们也起作用。

    那我做错了什么?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Wiktor Stribiżew    7 年前

    你可以用

    '^/test/:gender(word1|word2)\\b'
    

    请注意,在 gender word ,您只能保留 尾随 单词边界。

    要定义单词边界,需要在后面跟一个反斜杠 b ,所以在字符串文字中,应该编写两个连续的反斜杠符号。

    推荐文章