匹配路由参数的正则表达式
Regex to match route parameters
我在使用正则表达式时总是有点吃力。当路由设置了参数时,我正在尝试制作一个与路由匹配的正则表达式:
例如:
/post/1
匹配 /post/{id}
/post/5/
不匹配 /post/{id}
/post/6/comments/4
匹配 /post/{id}/comments/{comment}
/post/a-random-slug
匹配 /post/{id}
或 /post/{slug}
(无论你想为参数命名)
/user
匹配 /user
,但不匹配 /user/
我目前所做的是为每个路由创建一个正则表达式,然后将当前 URI 与该路由正则表达式进行匹配。
我目前拥有的是:
在这个例子中,我尝试为路由制作一个正则表达式:/post/{param1}/{param2}
。这意味着它应该匹配 /post/
然后是一个参数和另一个参数,但在 那个参数之后 什么都不匹配。
如您所见:^(\/post\b)(\/.{1,}\/)(.{1,}\b)$
匹配 /post/what-is-your-name/5
,当我添加另一个 /
时,它不再匹配。但是,如果您在 之后 添加字符,则该正则表达式再次开始匹配。
意思是:
/post/what-is-your-name/5/
不匹配
/post/what-is-your-name/5/more
匹配
有人知道我如何完成第一个示例吗?
到目前为止,我是一个非常了解正则表达式的人,如果有人看到更好的方法来匹配 URI 和路由,请告诉我。
希望这对您有所帮助
正则表达式:^(?:\/post\b)(?:\/[\w]+){2}$
我在使用正则表达式时总是有点吃力。当路由设置了参数时,我正在尝试制作一个与路由匹配的正则表达式:
例如:
/post/1
匹配/post/{id}
/post/5/
不匹配/post/{id}
/post/6/comments/4
匹配/post/{id}/comments/{comment}
/post/a-random-slug
匹配/post/{id}
或/post/{slug}
(无论你想为参数命名)/user
匹配/user
,但不匹配/user/
我目前所做的是为每个路由创建一个正则表达式,然后将当前 URI 与该路由正则表达式进行匹配。
我目前拥有的是:
在这个例子中,我尝试为路由制作一个正则表达式:/post/{param1}/{param2}
。这意味着它应该匹配 /post/
然后是一个参数和另一个参数,但在 那个参数之后 什么都不匹配。
如您所见:^(\/post\b)(\/.{1,}\/)(.{1,}\b)$
匹配 /post/what-is-your-name/5
,当我添加另一个 /
时,它不再匹配。但是,如果您在 之后 添加字符,则该正则表达式再次开始匹配。
意思是:
/post/what-is-your-name/5/
不匹配/post/what-is-your-name/5/more
匹配
有人知道我如何完成第一个示例吗?
到目前为止,我是一个非常了解正则表达式的人,如果有人看到更好的方法来匹配 URI 和路由,请告诉我。
希望这对您有所帮助
正则表达式:^(?:\/post\b)(?:\/[\w]+){2}$