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 match
Does 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.