1

我正在尝试匹配 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"}
    ];

第二个当然匹配任意位数。我想知道我是否必须逃离{

4

1 回答 1

3

看起来 FW/1 只允许路由声明的有限正则表达式语法。所以我认为你的第一个例子不会奏效。据我所知,路由中有限的正则表达式语法已添加到 FW/1 版本 3.5。我发现了一些关于该主题的讨论以及描述所请求行为的特定评论 - https://github.com/framework-one/fw1/issues/325#issuecomment-118572702

{placeholder:regex},所以我们可以有 product/{id:[0-9]+}-:name.html 以 product.detail?id={id:[0-9]+}&name=:name 为目标。

  • 您还需要在目标路由中使用正则表达式重复占位符(可以更改)。
  • 您不能将 } 放入占位符特定的正则表达式中。

让我知道是否欢迎此附加组件的 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/something 的匹配项,将被处理好像 URL 是 /product/view/id/something - 部分:产品,项目:视图,查询字符串 id=something。同样,{ "/product/{id:[0-9]+}" = "/product/view/id/:id" }为 /product/42 指定匹配项,该匹配项将被视为 URL 为 /product/view/id/42,并且只有数字值与占位符匹配。

于 2016-01-12T13:07:42.217 回答