2016-07-29 4 views
0

Ich habe die beiden folgenden Weg:Express Route Parsing treffen Strecken sollte es nicht

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

Der erste Weg nur Urls wie /posts/4352/ erfassen sollte, aber nicht /posts/3422/like. Wie auch immer. Ich habe es in der für Express versucht und dort funktioniert es wie erwartet. (Versuchen Sie, /posts/:postId([0-9]*) und /posts/2/like einzufügen. Sie werden sehen, dass es nicht übereinstimmt.)

Was könnte in meinem Fall diese falsche Übereinstimmung verursachen?

Hinweis: Ich weiß, wenn ich die Reihenfolge ändern, als es funktioniert, aber ich bin neugierig, warum das passiert.

Antwort

-1

Flip die Bestellung, wird es auf einer ersten Treffer Basis entspricht, es sei denn next() verwendet wird, es für ein anderes Spiel nicht

+0

Wie ich bereits erwähnt aussehen wird, das weiß ich es beheben. Ich möchte das _why_ nicht das _how_ wissen. – NoNameProvided

+0

Wie ich vielleicht schlecht formuliert habe, funktioniert das wie eine Case-Anweisung, dass es passt und bei einer ersten richtigen Übereinstimmung stoppt. also [0-9] * was eigentlich eine einzelne Zahl ist, dann etwas in Regex im Vergleich zu ([0-9] *), was eine beliebige Anzahl von Zahlen ist. –

Verwandte Themen