Kohana验证正则表达式 - 必须具有较低和较高的字符

时间:2011-08-09 13:42:32

标签: php regex kohana

我正在使用以下正则表达式

->rule('password','regex', array(':value', "(?=.*?[a-z])(?=.*?[A-Z])"))

但Kohana抱怨说'('是一个未知的修饰符。是否有另一种方法可以正则表达一个字符串,以确保它有一个或多个低位字母和一个或多个高位字母?

2 个答案:

答案 0 :(得分:2)

PHP期望在其正则表达式周围添加其他分隔符(并错误地为分隔符设置了第一组括号)。使用

->rule('password','regex', array(':value', "/(?=.*?[a-z])(?=.*?[A-Z])/"))

并且可能将其锚定到字符串的开头。这样,正则表达式只会在失败时进行一次测试,而不是对字符串中的每个字符进行一次测试:

->rule('password','regex', array(':value', "/^(?=.*?[a-z])(?=.*?[A-Z])/"))

答案 1 :(得分:0)

怎么样?

~([a-z].*[A-Z]|[A-Z].*[a-z])~

请参阅http://kohanaframework.org/3.0/guide/api/Validate#regex