我正在尝试匹配ID恰好有6个数字的路线
这不起作用:
variables.framework.routes = [
{ "main/{id:[0-9]{6}}" = "main/home/eid/:id"},
{ "main/home" = "main/home"},
{ "*" = "main/404"}
];
这样做:
variables.framework.routes = [
{ "main/{id:[0-9]+}" = "main/home/eid/:id"},
{ "main/home" = "main/home"},
{ "*" = "main/404"}
];
第二个当然匹配任意数字的数字。我想知道我是否必须逃离{
答案 0 :(得分:3)
看起来FW / 1只允许路由声明的有限正则表达式语法。所以我认为你的第一个例子不会起作用。根据我的发现,路由中的有限正则表达式语法被添加到FW / 1版本3.5。我发现了一些关于该主题的讨论以及描述所请求行为的特定评论 - https://github.com/framework-one/fw1/issues/325#issuecomment-118572702
{占位符:正则表达式},所以我们可以将product / {id:[0-9] +} - :name.html定位到product.detail?id = {id:[0-9] +}&命名=:名称
- 您还需要在目标路线中使用正则表达式重复占位符(可以更改)。
- 您不能将}放在占位符特定的正则表达式中。
请告知我这个附加组件是否欢迎PR。
请注意,第二个要点提到占位符正则表达式中不允许}
(括号)。
以下是该拉取请求引用的代码的链接,该请求包含在3.5 - https://github.com/framework-one/fw1/commit/9543b78552dbd27a526083ac72a3846bd86eeb90
中以下是版本3.5的更新文档的链接,其中添加了有关此功能的一些信息 - http://framework-one.github.io/documentation/developing-applications.html#url-routes
该文档的片段:
路径中的占位符变量由前导冒号或大括号(指定变量名称和正则表达式来限制匹配)标识,并且也可以显示在URL中,例如
{ "/product/:id" = "/product/view/id/:id" }
指定匹配/ product /将被视为URL为/ product / view / id / something的东西 - section:product,item:view,query string id = something。同样,{ "/product/{id:[0-9]+}" = "/product/view/id/:id" }
指定/ product / 42的匹配项,将其视为URL为/ product / view / id / 42,并且只有数字值与占位符匹配。