我正在尝试Regex进行密码验证,我有以下要求:
- 密码应至少包含1个大写字符
- 密码应至少包含1个较低的字符
- 密码应至少包含1个数字
- 密码应至少包含1个特殊字符
- 密码中的所有字符应在20到7E(ASCII HEX值(的范围内,这意味着不包括变音符号和其他符号
到目前为止,我已经想出了这个REGEX:
^(?=[x20-x7E])(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^a-zA-Z0-9]).*(?<=.[x20-x7E])$
当我测试它时,它会失败2/3,我不能让它在最后一个失败——当一些不在范围内的字符位于密码中间时。对于第一个和最后一个是可以的。看看测试正则表达式img。有没有想过如何让它发挥作用?
您可以使用
^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^0-9]*[0-9])(?=[a-zA-Z0-9]*[^a-zA-Z0-9])[x20-x7E]+$
详细信息:
^
-字符串的开头(?=[^A-Z]*[A-Z])
-至少一个大写ASCII字母(?=[^a-z]*[a-z])
-至少一个小写ASCII字母(?=[^0-9]*[0-9])
-至少一个ASCII数字(?=[a-zA-Z0-9]*[^a-zA-Z0-9])
-至少一个ASCII字母数字字符以外的字符[x20-x7E]+
-x20
和x7E
范围内的一个或多个字符$
—字符串结束