PHP 5.6.10 - preg_match():编译失败:偏移量 100 处的字符 class 中的范围无效

PHP 5.6.10 - preg_match(): Compilation failed: invalid range in character class at offset 100

我遵循在 ZendFrame 工作路由中配置的正则表达式

'constraints' => array(
 'controller' => '[a-zA-Z0-9_-]*',
 'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
 'dashname' => '[a-zA-Z0-9_-\s]*',
 'formatter' => '[a-zA-Z]*'
 )

抛出错误 警告:preg_match():编译失败:字符 class 中的无效范围位于 app\vendor\zendframework\zendframework\library\Zend\Mvc\Router\Http\Segment.[=34 中的偏移量 100 =] 线上 370

问题似乎出在 'dashname' => '[a-zA-Z0-9_-\s]*',

相同的代码在 PHP 5.4 版本中有效,但在 PHP5.6 版本中无效,感谢任何帮助。

在class中-是一个范围运算符,你需要用\

来转义它

[a-zA-Z0-9_\-\s]