FW / 1模式匹配N位数

时间:2016-01-11 19:31:16

标签: regex coldfusion fw1

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

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

1 个答案:

答案 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,并且只有数字值与占位符匹配。