正则表达式密码复杂性要求在创建或更改密码时必须应用any three
以下四个特征。
我正在尝试使用以下代码,但它不适用于special characters
(?=^.{6,}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*
我希望我的正则表达式能够针对以下4个案例进行验证
匹配案例
答案 0 :(得分:6)
我认为在这种情况下单个正则表达式会很混乱。您可以轻松地执行类似
的操作var count = 0;
count += /[a-z]/.test(password) ? 1 : 0;
count += /[A-Z]/.test(password) ? 1 : 0;
count += /\d/.test(password) ? 1 : 0;
count += /[@]/.test(password) ? 1 : 0;
if(count > 2) {
alert('valid')
}
答案 1 :(得分:4)
我认为你可以使用的正则表达式是:
(?=^.{6,}$)(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9]).*
我不确定为什么你的正则表达式中有这么多或运算符,但如果符合以下情况则匹配:
(?=^.{6,}$)
- 字符串是> 5个字符(?=.*[0-9])
- 包含数字(?=.*[A-Z])
- 包含大写字母(?=.*[a-z])
- 包含小写字母(?=.*[^A-Za-z0-9])
- 不是字母数字的字符。
答案 2 :(得分:2)
使用此正则表达式:
的 强> 的(?= ^。{6,10} $)(?= \ d)(?=。 [AZ]); _ +} {“(= [AZ])(= [@#$%^&安培*(??!):;?”/>< ,])(?! \ S)。的$ **
答案 3 :(得分:0)
我认为你也需要这个特殊字符:[更新以拒绝空格]
$(document).ready(function(){
$('input').change(function(){
var count = 0;
var pass = $(this).val();
count += /[a-z]/.test(pass) ? 1 : 0;
count += /[A-Z]/.test(pass) ? 1 : 0;
count += /\d/.test(pass) ? 1 : 0;
count += /[^\w\d\s]/.test(pass) ? 1 : 0;
(count>2 & !/[\s]+/.test(pass)) ? $(this).css('background-color','lime'):$(this).css('background-color','orange');
});
});
和小提琴:jsFiddle
答案 4 :(得分:0)
var pattern = new RegExp(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{6,}$/);
if(pattern.test(value)){
return true;
} else {
return false;
}
它的特殊性也很好。