Javascript 快速路由解析命中路由它不应该

Javascript 快速路由解析命中路由它不应该,javascript,regex,express,routing,Javascript,Regex,Express,Routing,我有以下两条路线: router.get('/:postId([0-9]*)', handler) router.get('/:postId([0-9]*)/like', handler) 第一个路由应该只捕获像/posts/4352/这样的URL,而不是/posts/3422/这样的URL。不管怎样。我已经试过了for express,在那里它可以正常工作。尝试粘贴/posts/:postId[0-9]*和/posts/2/类似内容。你会发现它不匹配 在我的情况下,什么会导致这种错误匹配

我有以下两条路线:

router.get('/:postId([0-9]*)', handler) 
router.get('/:postId([0-9]*)/like', handler)
第一个路由应该只捕获像/posts/4352/这样的URL,而不是/posts/3422/这样的URL。不管怎样。我已经试过了for express,在那里它可以正常工作。尝试粘贴/posts/:postId[0-9]*和/posts/2/类似内容。你会发现它不匹配

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


注意:我知道如果我改变顺序,它将无法工作,但我很好奇为什么会发生这种情况

翻转顺序,它将在第一次命中的基础上匹配,除非使用“下一次”,否则它将不会寻找另一个匹配

正如我提到的,我知道它会修复它。我想知道为什么不知道怎么做。因为我可能措辞不好,这就像一个案例陈述,它将匹配,并在第一次正确匹配时停止。所以[0-9]*实际上是一个数字,然后是正则表达式中的任何数字,而[0-9]*是任意数量的数字。