0

我对 CakePHP 中的路由有一个简单的正则表达式要求,这给我带来了麻烦。

路由代码:

Router::connect('/tees/:id', array('controller' => 'tees', 'action' => 'view'), array('id' => "^.*[0-9].*[-][a-z].*$"));

regex: "^.*[0-9].*[-][a-z].*$"

匹配案例:340764-test-tee 失败案例:test 失败案例:anysingleword

关于我做错了什么的任何想法?

谢谢!

编辑:

我最终使用的解决方案如下:

".*[0-9].*[a-z-].*"
4

1 回答 1

0

根据正则表达式语法,您要求每个匹配项都包含一个“-”字符(正则表达式中的 [-]),因此任何没有“-”的单词都不会匹配。
如果您打算这样做,那么 [-] 不是通常的方式,请使用 \- 如果您不打算始终匹配“-”,也许您想将其添加到 [az],那么正确的语法是:

^.*[0-9].*[a-z-].*$

但请注意 [az-] 将仅匹配 1 个字符,您可能的意思是

^.*[0-9].*[a-z-]*$

或者

^.*[0-9]*[a-z-]*$
于 2012-07-16T15:55:30.707 回答