我正在使用一个小脚本以题字形式检查密码强度,这是脚本的相关部分:
$('#password').keyup(function(){
var password = $(this).val();
password = $.trim(password);
var lettre_min = /[a-z]/;
var lettre_maj =/[A-Z]/;
var nombre = /[0-9]/;
var symbole = /[\`\!\"\?\$\%\^\&\*\(\)\_\-\+\=\{\[\}\]\:\;\@\'\~\#\|\\\<\,\>\.\/]/;
if(password.length != 0)
{
//password moin de 8 caractères
if(password.length <8)
{
$('.bar').animate({width:'50px',height:'5px'},200).show();
$('.bar').css('background-color','red');
$('.error').text('Too short').show();
}else
//password faible
if((password.match(lettre_min)) && password.length <12)
{
$('.bar').animate({width:'75px',height:'5px'},200).show();
$('.bar').css('background-color','red');
$('.error').text('Weak').show();
}else
//password moyen
//1 type
if((password.match(lettre_min)) && (password.match(nombre)) && password.length <12)
{
$('.bar').animate({width:'100px',height:'5px'},200).show();
$('.bar').css('background-color','orange');
$('.error').text('Average').show();
}else ...
问题是:如果我在表单输入上放置字母(lettre_min)和数字(nombre),他告诉我密码很弱,他应该告诉我它是平均值。他完全忽略了第二个条件。
我不知道发生了什么= /
PS:对不起,如果在另一个问题上已有答案,但我甚至不知道问题是什么,所以我不知道该搜索什么= /
答案 0 :(得分:0)
实际上我倾向于相信第三个条件没有被评估,因为它是第二个条件的一个更大的情况,考虑切换第二条If和第三条它应该有效。
第二个if可以包含小写字母而且还包含数字,因为match()计算它是否包含那种东西所以在执行第二次执行之前,第一次执行第三次也将检查是否有数字,如果没有则只检查字母。
答案 1 :(得分:0)
快速解决方案:
//password moyen
//1 type
if((password.match(lettre_min)) && (password.match(nombre)) && password.length <12)
{
$('.bar').animate({width:'100px',height:'5px'},200).show();
$('.bar').css('background-color','orange');
$('.error').text('Average').show();
} else if((password.match(lettre_min)) && password.length <12)
{
$('.bar').animate({width:'75px',height:'5px'},200).show();
$('.bar').css('background-color','red');
$('.error').text('Weak').show();
}
如果if((password.match(lettre_min)) && (password.match(nombre)) && password.length <12)
为真,则if((password.match(lettre_min)) && password.length <12)
也为真。
答案 2 :(得分:0)
您检查密码强度的条件顺序是错误的。解决它:
if((password.match(lettre_min)) && password.length <12){
if(password.match(nombre)){
//average
}else{
//weak
}
}else if(password.length < 8){
//too short
}else{
//it must be strong
}