用于匹配2个url cakephp路由的正则表达式

时间:2012-01-13 17:09:49

标签: regex cakephp expression

以下是网址的两个示例:

/汽车/的 2004 -audi-A * 4 * - 12149

/汽车/的 12149

这是我到目前为止所做的:

[0-9] - [A-ZA-Z] - [A-ZA-Z] - [0-9] | [0-9] +

这只与我上面提到的部分相匹配。我需要匹配下面鼓励的部分:

/汽车/ 2004-奥迪-A4-的 12149

/汽车/的 12149

它可能与正则表达式没有区别,但我在cakephp路线中使用它:

Router::connect(
   '/car/:id',
   array('controller' => 'cars', 'action' => 'view'),
   array(
      'pass' => array('id'),
      'id' => '[0-9]-[A-Za-z]-[A-Za-z]-[0-9]|[0-9]+'
   )
);

2 个答案:

答案 0 :(得分:1)

如果你想匹配字符串的最后一个数字,你可以使用它。

\d+$

如果我离开了,你能尝试再次描述这种模式吗?

答案 1 :(得分:0)

\d+$不起作用的原因源于此代码/car/:id 在您的路线定义中,您在斜线后要求所有的蛋糕与\d+$匹配 /car/2004-audi-a*4*-12149

的情况并非如此

我宁愿将整个2004-audi-a*4*-12149作为:slug传递给一个动作 然后调用常规的php preg_match来使用(\d+$)

提取id