12

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

这是我的正则表达式

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

我收到以下错误警告:preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 17 in myfile.php on line 8

有什么帮助吗?

4

2 回答 2

25

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

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

如果你不这样做,-则被解释为范围运算符,如果x > y[x-y]得到那个错误。

于 2012-04-17T02:46:01.270 回答
0

/u当我收到此警告时,我在模式的末尾使用了。就试一试吧。这意味着不贪婪的模式

$pattern = "^([ `anything` ])$/u";
于 2020-06-05T16:24:20.477 回答