function updateMeter() { p = document.getElementById("password").value; var maxWidth = "200"; var nScore = this.calcStrength(p); var nRound = Math.round(nScore * 2); if (nRound > 100) { nRound = 100; } var scoreWidth = (maxWidth / 100) * nRound; document.getElementById("scoreBar").style.width = scoreWidth+"px" } function calcStrength(p) { var intScore = 0; intScore += p.length; if(p.length > 0 && p.length <= 4) { intScore += p.length; } else if (p.length >= 5 && p.length <= 7) { intScore += 6; } else if (p.length >= 8 && p.length <= 15) { intScore += 12; } else if (p.length >= 16) { intScore += 18; } if (p.match(/[a-z]/)) { intScore += 1; } if (p.match(/[A-Z]/)) { intScore += 5; } if (p.match(/\d/)) { intScore += 5; } if (p.match(/.*\d.*\d.*\d/)) { intScore += 5; } if (p.match(/[!,@,#,$,%,^,&,*,?,_,~]/)) { intScore += 5; } if (p.match(/.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~]/)) { intScore += 5; } if (p.match(/(?=.*[a-z])(?=.*[A-Z])/)) { intScore += 2; } if (p.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/)) { intScore += 2; } if (p.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!,@,#,$,%,^,&,*,?,_,~])/)) { intScore += 2; } return intScore; }