我总是在使用正则表达式时遇到困难。当路由设置参数时,我正在尝试制作匹配路由的正则表达式:
例如:
/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,那么请告诉我。