我需要一个带有条件的正则表达式:
- 最少 6 个字符,最多 50 个字符
- 必须包含 1 个字母
- 必须包含 1 个数字
- 可能包含特殊字符,例如!@#$%^&*()_+
目前我有模式:(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6 ,50})$
但是它不允许特殊字符,有人有一个好的正则表达式吗?
谢谢
最佳答案
也许可以使用单个正则表达式,但这使得很难向用户提供他们没有遵循哪条规则的反馈。像这样的更传统的方法会为您提供反馈,您可以在 UI 中使用该反馈来告诉用户哪些密码规则未得到满足:
function checkPwd(str) {
if (str.length < 6) {
return("too_short");
} else if (str.length > 50) {
return("too_long");
} else if (str.search(/\d/) == -1) {
return("no_num");
} else if (str.search(/[a-zA-Z]/) == -1) {
return("no_letter");
} else if (str.search(/[^a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\_\+]/) != -1) {
return("bad_char");
}
return("ok");
}
关于javascript - 密码 REGEX 至少 6 个字符,至少 1 个字母和 1 个数字,并且可以包含特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844359/