notes
notes copied to clipboard
PCRE正则表达式密码强度验证 or PCRE Regular Expressions For Password
应用场景
密码规则要求必须同时包含数字,小写字母,大写字母,特殊字符(标点),且长度在n到m之间。
与之对应的 ASCII 编码范围为 33(!)-126(~), 对应的PCRE正则字符集范围为 [!-~] 或者[\x21-\x7E]
代码如下
/^(?=.*[[:digit:]])(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]])[[:graph:]]{n,m}$/
正则分段说明
/^$/ // 开始到结束
(?=.*[[:digit:]]) // 至少包含一个数字
(?=.*[[:lower:]]) // 至少包含一个小写字母
(?=.*[[:punct:]]) // 至少包含一个特殊字符(标点符号)
[[:graph:]]{n,m} // 只能为n-m位长度的可打印字符(空格除外)
PHP Demo
同时包含数字,小写字母,大写字母,特殊字符(标点),且长度在8到32个字符之间。
$pass = 'sdfj^(U0gnj;adfall09h';
$rule = '/^(?=.*[[:digit:]])(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]])[[:graph:]]{8,32}$/';
if (!preg_match($rule, $pass))
{
// do some thing
}