PHP正则表达式中“字符类中的范围乱序”?

时间:2012-04-17 02:40:29

标签: php regex

我试图让这项工作暂时但却徒劳无功。 我想创建一个php正则表达式来检查一个字符串是否至少包含一个数字,并且至少有一个符号(_- + = *&)

这是我的正则表达式

 $result = preg_match('/^(?=.*\d)(?=.*[_-+=*&]).{3,}$/',$pass);

我收到以下错误        警告:preg_match()[function.preg-match]:编译失败:第8行myfile.php中偏移量为17的字符类中的乱序范围

任何帮助?

2 个答案:

答案 0 :(得分:24)

-需要转义,或放在[...]列表的开头/结尾处:

$result = preg_match('/^(?=.*\d)(?=.*[-_+=*&]).{3,}$/',$pass);

如果不这样做,-将被解释为范围运算符,而x > y中的[x-y]则会出现该错误。

答案 1 :(得分:0)

收到此警告时,我在模式末尾使用了/u。就试一试吧。 这表示不满意模式

$pattern = "^([ `anything` ])$/u";