【发布时间】:2014-05-21 06:26:39
【问题描述】:
我想使用 preg_math 函数验证输入的密码是否符合我的复杂性和长度规则:
if (!preg_match('/(?=.*[A-Za-z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])/', $password)) {
$errors[] = 'Password allows alpha-numerical sumbols and should contain number and letters between 6-24 symbols';
}
但是这个功能不能正常工作。因为我的密码应该至少包含一个数字 (0-9) 和一个字母 (az)或 符号 (,),_,- 介于 6 到 20 个符号之间。
如何编写正则表达式? 谢谢!
【问题讨论】:
-
把它写成三个独立的测试;一个测试长度,一个测试数字,一个测试字母和符号。比将所有内容都塞进一个正则表达式要理智得多。
-
虽然检查最小长度是明智的,但我会不做其他测试。他们只会缩小搜索空间,并惹恼用户,因此他们选择较弱的密码(如
password2014)。
标签: php passwords preg-match