2013-04-18 3 views
1

Я работаю над скриптом проверки пароля.Мне нужна помощь в проверке пароля javascript?

Следующий код работает нормально с номерами, буквами верхнего и нижнего регистра.

Единственная проблема в. Нажатии клавиши пробела, длина более 8, дисплей возвращает true.

не допускается только специальными символами.

$("#password").keyup(function() { 
    var validated = true; 
    if (this.value.length < 8) 
     validated = false; 
    if (!/\d/.test(this.value)) 
     validated = false; 
    if (!/[a-z]/.test(this.value)) 
     validated = false; 
    if (!/[A-Z]/.test(this.value)) 
     validated = false; 
    if (!/[@#$%\&^\-\+=!*.?~]/.test(this.value)) 
     validated = false; 
    if (/[^[email protected]#$%^&+=!*,.?~]/.test(this.value)) 
     validated = false; 
    $('#password_strength').text(validated ? "Good" : "Too Weak"); 
+1

Вы не проверяя эти два случая действительно ... – bfavaretto

+0

я был только способен украсить код. Что вам нужно? –

+0

Вы можете сделать все это в одном регулярном выражении. Просто посмотрите на библиотеки проверки пароля, довольно легко найти регулярное выражение. – Steven

ответ

0

При проверке символов в пароле с помощью регулярных выражений, вы хотите, чтобы избежать их, чтобы они взяты как буквенный символ, а не регулярное выражение смысл символа. Для получения дополнительной информации, я бы рекомендовал проверить:

http://www.javascriptkit.com/javatutors/redev2.shtml

https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions

+0

Что вы хотели выразить? «Когда вы проверяете символы в своем пароле с помощью регулярного выражения, вы должны избегать их, чтобы они воспринимались как буквальный символ, а не значение регулярного выражения символа». --- уточните это. – zerkms

+0

Например, символ '.' В regex является заполнителем для _any character_, кроме пробела. Где символ '\.' - это только символ периода. –

+0

в '[]' он не ведет себя так. Поэтому '[.]' - это набор, который включает в себя символ точки. – zerkms

Смежные вопросы