【问题标题】:Express route parsing hit routes it should not快速路由解析命中路由它不应该
【发布时间】:2016-12-04 16:49:22
【问题描述】:

我有以下两条路线:

router.get('/:postId([0-9]*)', handler) 
router.get('/:postId([0-9]*)/like', handler)

第一条路由应该只捕获像 /posts/4352/ 这样的 URL,而不是 /posts/3422/like。然而它确实如此。我已经在official route tester 中尝试过表达,它可以按预期工作。 (尝试粘贴/posts/:postId([0-9]*)/posts/2/like。你会发现它不匹配。)

在我的情况下,什么可能导致这种错误匹配?

注意:我知道如果我更改订单,它会起作用,但我很好奇为什么会发生这种情况。

【问题讨论】:

    标签: javascript regex express routing


    【解决方案1】:

    翻转排序,它将在第一次命中的基础上匹配,除非使用 next() 它不会寻找另一个匹配

    【讨论】:

    • 正如我所提到的,我知道它会解决它。我想知道为什么而不是如何
    • 我可能措辞不当,这就像一个 case 语句,它将匹配并在第一个正确匹配时停止。所以 [0-9]* 实际上是一个数字,然后是正则表达式中的任何内容,而 ([0-9]*) 是任意数量的数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多