Проверка надёжности пароля
Собственно изобретаю велосипед, вроде бы всё в порядке, но что-то идёт не так, вот не могу разобраться, что именно:
function CheckPass(item) { var pass = document.getElementById(item).value; var pass_length = document.getElementById(item).value.length; var item_view = 'pswdcheck'; var count=0; var reg = "\!\"\:\?\\\%\?\;\|\/\=\-\+\_\(\)\*\#\@\$\^\&\.\,\[\]\{\}\'\`\~№"; if (pass_length > 0 && pass_length <= 5) { count += 3; count *= 1; } else if (pass_length > 5 && pass_length <= 8) { count += 5; count += countsimbols(pass,pass_length); count *= 1.5; } else if (pass_length > 8 && pass_length <= 12) { count += 10; count += countsimbols(pass,pass_length); count *= 2; } else if (pass_length > 12 && pass_length <= 17) { count += 15; count += countsimbols(pass,pass_length); count *= 2.5; } else if (pass_length > 17 && pass_length <= 20) { count += 20; count += countsimbols(pass,pass_length); count *= 3; } else if (pass_length > 21) { count += 25; count += countsimbols(pass,pass_length); count *= 4; } if (count == 0) { document.getElementById(item_view).innerHTML = 'Пожалуйста введите пароль ' + count; document.getElementById(item_view).className = 'pswdno'; } else if (count > 0 && count <= 40) { document.getElementById(item_view).innerHTML = 'Наихудший пароль ' + count; document.getElementById(item_view).className = 'pswdweeker'; } else if (count > 40 && count <= 80) { document.getElementById(item_view).innerHTML = 'Плохой пароль ' + count; document.getElementById(item_view).className = 'pswdweek'; } else if (count > 80 && count <= 169) { document.getElementById(item_view).innerHTML = 'Умереный пароль ' + count; document.getElementById(item_view).className = 'pswdmedium'; } else if (count > 169 && count <= 300) { document.getElementById(item_view).innerHTML = 'Хороший пароль ' + count; document.getElementById(item_view).className = 'pswdgood'; } else if (count > 300 && count <= 500) { document.getElementById(item_view).innerHTML = 'Сильный пароль ' + count; document.getElementById(item_view).className = 'pswdstrong'; } else if (count > 500 && count <=900) { document.getElementById(item_view).innerHTML = 'Науилучший пароль ' + count; document.getElementById(item_view).className = 'pswdstronger'; } } function countsimbols(pass,pass_length) { var count = 0; //цифры if (pass.match( /\d/ )){ var i = pass_length - pass.replace(/\d/gm,'').length; count += 5; if (i >= 6) count += 10; } //символы if (pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { count += 8; var i = pass_length - pass.replace(/.[!,@,#,$,%,^,&,*,?,_,~]/gm,'').length; if (i >= 3) count += 20; } //маленькие буквы if (pass.match(/[a-zа-я]/)) { count+=5; var i = pass_length - pass.replace(/[a-zа-я]/gm,'').length; if (i >= 6) count += 10; } //большие буквы if (pass.match(/[A-ZА-Я]/)) { count += 5; var i = pass_length - pass.replace(/[A-ZА-Я]/gm,'').length; if (i >= 6) count += 10; } //цифры + сим156волы || символы + цифры if (pass.match(/\d/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { count += 10; } //цифры + маленькие буквы || маленькие буквы + цифры if (pass.match(/\d/) && pass.match(/[a-zа-я]/) { count += 8; } //цифры + большие буквы || большие буквы + цифры if (pass.match(/\d/) && pass.match(/[A-ZА-Я]/)) { count += 8; } //маленькие буквы + большие буквы || большие буквы + маленькие буквы if (pass.match(/[a-zа-я]/) && pass.match(/[A-ZА-Я]/)) { count += 6; } //маленькие буквы + символы || символы + маленькие буквы if (pass.match(/[a-zа-я]/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { count += 10; } //большие буквы + символы || символы + маленькие буквы if (pass.match(/[A-ZА-Я]/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { count += 10; } //цифры + большие буквы + маленькие буквы if (pass.match(/\d/) && pass.match(/[A-Za-zА-Яа-я]/)) { count += 10; } //цифры + маленькие буквы + символы if (pass.match(/\d/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/) && pass.match(/[a-zа-я]/)) { count += 15; } //цифры + большие буквы + символы if (pass.match(/\d/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/) && pass.match(/[A-ZА-Я]/)) { count += 15; } //большие буквы + маленькие буквы + символы if (pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/) && pass.match(/[A-Za-zА-Яа-я]/)) { count += 15; } //все if (pass.match(/\d/) && pass.match(/[A-Za-zА-Яа-я]/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { count += 20; } return count; } <form> <input type='password' id='pass_id' name='pass' onkeypress="CheckPass('pass_id')" onfocus="CheckPass('pass_id')" onkeyup="CheckPass('pass_id')" value="" placeholder="Password" required/> <div id='pswdcheck'></div> </form> единственные предположения что где-то скобочку упустил, либо в функцию не правильно передаю значения, с js столкнулся пятый раз, так что возможно что ошибки самые новичковские. Конечно свой велосипед хорошо, но я всё таки поискал кое-что и нашёл такую проверку https://github.com/lowe/zxcvbn Только вот вопрос как её поставить, не разберусь никак, с гитхабом впервые начал мудрить. |
Цитата:
з.ы. все ошибки видно в консоли браузера |
Часовой пояс GMT +3, время: 18:45. |