我对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-].*"
答案 0 :(得分:0)
根据正则表达式语法,您要求每个匹配包含一个' - '字符(正则表达式中的[ - ]),因此任何没有' - '的单词都不匹配。
如果您打算这样做,那么[ - ]不是通常的方法,请使用\ -
如果你不打算匹配' - 'ALWAYS,也许你想将它添加到[a-z],那么正确的语法是:
^.*[0-9].*[a-z-].*$
但请注意,[a-z-]只匹配1个字符,你可能意味着
^.*[0-9].*[a-z-]*$
或
^.*[0-9]*[a-z-]*$