我正在使用以下正则表达式
->rule('password','regex', array(':value', "(?=.*?[a-z])(?=.*?[A-Z])"))
但Kohana抱怨说'('是一个未知的修饰符。是否有另一种方法可以正则表达一个字符串,以确保它有一个或多个低位字母和一个或多个高位字母?
答案 0 :(得分:2)
PHP期望在其正则表达式周围添加其他分隔符(并错误地为分隔符设置了第一组括号)。使用
->rule('password','regex', array(':value', "/(?=.*?[a-z])(?=.*?[A-Z])/"))
并且可能将其锚定到字符串的开头。这样,正则表达式只会在失败时进行一次测试,而不是对字符串中的每个字符进行一次测试:
->rule('password','regex', array(':value', "/^(?=.*?[a-z])(?=.*?[A-Z])/"))
答案 1 :(得分:0)