I always have I kinda rough time working with regexes. I'm trying to make a regex that matches routes, when the route has parameters set:
For instance:
/post/1
matches /post/{id}
/post/5/
doesn't match /post/{id}
/post/6/comments/4
matches /post/{id}/comments/{comment}
/post/a-random-slug
matches /post/{id}
or /post/{slug}
(whatever you want to name the param)/user
matches /user
, but not /user/
What I currently did is create a regex for every route, and then match the current URI against that route regex.
What I currently have is:
In this example I try to make a regex for the route: /post/{param1}/{param2}
. Meaning it should match /post/
then a parameter and another parameter, but nothing after that parameter.
As you can see: ^(\/post\b)(\/.{1,}\/)(.{1,}\b)$
matches /post/what-is-your-name/5
, and when I add another /
it doesnt match anymore. However if you add characters after that regex again it starts to match again.
Meaning that:
/post/what-is-your-name/5/
doesn't match/post/what-is-your-name/5/more
does matchDoes anyone have an idea how I can accomplish the first example?
I'm by far someone who knows a lot about regexes, if someone sees a better way to match URIs against routes then please let me know.