Проверка пароля чисто JS. Как проверить на соответствие правилам в Password Checker

Привет у меня есть проверка пароля, но я не знаю, какой код я должен использовать для моей программы. Мне нужна моя программа для проверки на соответствие правилам, но я не знаю, как это сделать. Я надеялся, что кто-нибудь узнает, как это сделать, или хотя бы поможет мне в этом. Это пятнышки моей программы.

Пользователь вводит свой желаемый пароль, и на основании серии проверок система сообщает ему, является ли его пароль надежным или нет. Чтобы пароль считался надежным, он должен пройти следующие тесты: Пароль должен содержать не менее 1 заглавной буквы. Пароль должен содержать не менее 1 строчной буквы. Пароль должен содержать не менее 1 цифры. Пароль должен содержать не менее 1 из следующих символов: @ # $ % ^ & Пароль должен быть длиной не менее 8 символов. Когда пользователь вводит текст, ему необходимо предоставить информацию о надежности его пароля. Вам нужно будет проверить каждую букву, чтобы убедиться, что пароль соответствует этим правилам.

Это мой HTML.

<div style="text-align: center;" style="font-weight:bold;"> 
<h1> Password Strength Checker</h1>
<br/>
The most secure passwords will have a very strong rating.
<br/>
The ratings scale range from: Weak (0), Good (25) , Medium (50), Strong (75) and Very Strong (100).
<br/>
<br/>
RULES:
<br/>
1. Your password must contain at least 1 number.
<br/>
2. Your password must be at least 8 characters long.
<br/>
3. Your password must contain at least 1 capital letter.
<br/>
4. Your password must contain at least 1 lowercase letter.
<br/>
5. Your password must contain at least 1 of the following characters:
<br/>! @ + # $ % ^ & * , ? _ ~ - ( )  
<br/>
Spaces are not allowed.
<br/>
<br/>
<input type="text" id="password" size="30" name="password" autocomplete="off" onkeydown="passwordStrength(this.value);"><span id="passwordStrength" class="strength0"><span id = "passwordDescription"><br/>
Please Enter Password <br/>

Это мой JavaScript.

 function passwordStrength(password) {
 var rating = [
 0, "<font color='black'> Weak </font>",
 25, "<font color='red'> Good </font>",
 50, "<font color='yellow'> Medium </font>",
 75, "<font color='blue'> Strong </font>",
 100, "<font color='green'> Very Strong </font>"];

 var score = 0;
 var pass = "";

 if (password.length > 8) {
     score += 25;
 }      
 if ((password.match(/[a-z]/)) && (password.match(/[A-Z]/))) {
     score += 25
 }
 if (password.match(/.[,!,@,#,$,%,^,&,*,?,_,~,-,(,)]/)) {
     score += 25;
 }
 if (password.match(/[0-9]/)) {
     score += 25
 }
 if (password.match(/d+/)) {
     score += 10;}

 for (var i = rating.length - 1; i >= 0; i -= 1) {
     if (score >= rating[i]) {
         pass = rating[i +1];
         break;
     }
 }
 document.getElementById("passwordDescription").innerHTML = "<b>" + pass + score + "</font></b>"
 document.getElementById("passwordStrength").className = "strength" + score;
 }

Это мой jsfiddle. http://jsfiddle.net/jYcBT/138/

1 ответ

Решение

Не уверен, что ваш вопрос?

Тем не менее, я только исправил ваши специальные символы регулярное выражение

password.match(/[\!\@\#\$\%\^\&\*\?\_\~\-\(\)]+/) 

Удалите лишние 10 баллов, которые у вас были, не знаете, зачем вы это добавили?

изменить событие с onkeydown на onchange.

Это работает нормально, насколько я понимаю ваш поток.

http://jsfiddle.net/jYcBT/140/

Другие вопросы по тегам