Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于匹配2个URL cakephp路由的正则表达式_Regex_Cakephp_Expression - Fatal编程技术网

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

Regex 用于匹配2个URL cakephp路由的正则表达式,regex,cakephp,expression,Regex,Cakephp,Expression,以下是URL的两个示例: /汽车/2004-奥迪-a*4*-12149 /汽车/12149 这就是我到目前为止所做的: [0-9]-[A-Za-z]-[A-Za-z]-[0-9]|[0-9]+ 这只与我上面鼓起勇气的部分相匹配。我需要匹配下面鼓起勇气的部分: /car/2004-audi-a4-12149 /汽车/12149 这可能与正则表达式没有什么区别,但我在cakephp路由中使用了这一点: Router::connect( '/car/:id', array('control

以下是URL的两个示例:

/汽车/2004-奥迪-a*4*-12149

/汽车/12149

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

[0-9]-[A-Za-z]-[A-Za-z]-[0-9]|[0-9]+

这只与我上面鼓起勇气的部分相匹配。我需要匹配下面鼓起勇气的部分:

/car/2004-audi-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]+'
   )
);

如果要匹配字符串的最后一个数字,可以使用此选项

\d+$

如果我不太清楚,你能再描述一次模式吗?

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

\d+$

如果我走远了,你能试着再描述一下模式吗?

原因是
\d+$
不适合你,原因是这个代码
/car/:id
在路由定义中,要求斜杠后面的所有内容都与
\d+$
对于
/car/2004-audi-a*4*-12149

我宁愿把整个
2004-audi-a*4*-12149
作为一个:slug传递给一个action
然后使用
(\d+$)

调用一个常规的php预匹配来提取id,
\d+$
不适用于您的原因源于此代码
/car/:id
在路由定义中,要求斜杠后面的所有内容都与
\d+$
对于
/car/2004-audi-a*4*-12149

我宁愿把整个
2004-audi-a*4*-12149
作为一个:slug传递给一个action
然后使用
(\d+$)

调用一个常规的php预匹配来提取id,谢谢您的回复。当我测试正则表达式时,它似乎是匹配的,只是当我出于某种原因在cakephp路径中使用它时,它就不匹配了。有什么想法吗?我从来没用过CakePHP。其他人可能会更有帮助。谢谢你的回复。当我测试正则表达式时,它似乎是匹配的,只是当我出于某种原因在cakephp路径中使用它时,它就不匹配了。有什么想法吗?我从来没用过CakePHP。其他人可能会更有帮助。