2016-07-29 54 views
0

我有以下兩種途徑:快遞航線解析命中路線不應該

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

第一條路線應該只捕獲的URL像/posts/4352/,但不/posts/3422/like。但它確實如此。我已經在official route tester中嘗試過快遞,它在那裏按預期工作。 (嘗試粘貼/posts/:postId([0-9]*)/posts/2/like,您會看到它不匹配。)

在我的情況下會導致這種錯誤匹配?

注:我知道如果我改變順序比它會工作,但我很好奇爲什麼會發生這種情況。

回答

-1

翻轉排序,它將匹配先打基礎上,除非下一個()時,將不看另一場比賽

+0

正如我所說的,我知道它會解決它。我想知道_why_而不是_how_。 – NoNameProvided

+0

正如我可能嚴格措辭這樣的作品,像一個案例聲明,它會匹配並停止在第一次正確的比賽。所以[0-9] *實際上是一個單一的數字,然後任何正則表達式相比,([0-9] *)是任何數量的數量。 –