我希望正常表达以下组合
密码必须至少包含8个字符。至少一个大写 字母,至少一个小写字母和至少一个数字 数字。它可能包含特殊字符,但不包含空格。
目前我正在使用正则表达式。
/^.*((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(.*[!@#$%^&*()_+=])).*$/i
我希望密码可以按任何顺序排列。当前表达式允许我按顺序输入密码。
提前致谢
答案 0 :(得分:2)
你真的可以简化这个以使用Javascript和一些简单,易于理解的正则表达式:
function validPassword(password) {
return password.length >= 8 // Length
&& !~password.indexOf(" ") // No spaces
&& password.match(/[A-Z]/) != null // One uppercase
&& password.match(/[a-z]/) != null // One lowercase
&& password.match(/[0-9]/) != null; // One numerical digit
}
就个人而言,我可以比阅读/^.*((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(.*[!@#$%^&*()_+=])).*$/i
答案 1 :(得分:1)
删除前瞻之前存在的i
修饰符和.*
,并且还需要在字符类中添加A-Za-z\d
,以便它也匹配字母和数字。
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[A-Za-z\d!@#$%^&*()_+=]{8,}$/
如果您使用i
修饰符,则会使(?=.*[A-Z])
部分变得毫无意义。
答案 2 :(得分:0)
这是模式密码的示例。
async_read_some
遵循示例的描述:
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})
这可能对你有帮助吗?
答案 3 :(得分:0)
以下是您可以使用的正则表达式:
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\S{8,}$/
请参阅demo
说明:
(?=.*\d)
- 要求数字在字符串(?=.*[a-z])
- 需要小写字母(?=.*[A-Z])
- 需要大写字母\S{8,}
- 字符串应包含任何字符但空白,至少出现8次。注意锚点^
和$
,它们是不可或缺的。并且没有i
修饰符,或者大写/小写区分不起作用。
作为替代方案,为了优化正则表达式,我们可以使用counterclasses:
/^(?=\D*\d)(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])\S{8,}$/