CakePHP正则表达式的困境

时间:2012-07-16 15:40:19

标签: regex cakephp

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

路由代码:

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

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

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

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

谢谢!

编辑:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

但请注意,[a-z-]只匹配1个字符,你可能意味着

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

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