Собственно изобретаю велосипед, вроде бы всё в порядке, но что-то идёт не так, вот не могу разобраться, что именно:
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
Только вот вопрос как её поставить, не разберусь никак, с гитхабом впервые начал мудрить.