Я написал этот метод проверки, но у меня возникли проблемы с ним.Неожиданная проблема с поведением JavaScript
function validate_password(pwd)
{
var score = 0;
// Min length is 8
if (pwd.length<8)
return false;
// Is lower present?
if (/[a-z]/g.test(pwd))
{
console.log('a-z test on "'+pwd+'":' + /[a-z]+/g.test(pwd));
score++;
}
// Is upper present?
if (/[A-Z]/g.test(pwd))
{
console.log('A-Z test on: "'+pwd+'":' + /[A-Z]+/g.test(pwd));
score++;
}
// Is digit present?
if (/\d/g.test(pwd))
{
console.log('digit test on: "'+pwd+'":' + /\d/g.test(pwd));
score++;
}
// Is special char present?
if (/\W/g.test(pwd))
{
console.log('spec char test on: "'+pwd+'":' + /\W/g.test(pwd));
score++;
}
if (score>=3)
return true;
else
return false;
}
Это то, что написано в консоли:
>>> validate_password('aaasdfF#3s')
a-z test on "aaasdfF#3s":true
A-Z test on: "aaasdfF#3s":true
digit test on: "aaasdfF#3s":true
spec char test on: "aaasdfF#3s":true
true
>>> validate_password('aaasdfF#3s')
a-z test on "aaasdfF#3s":true
false
На первой попытки, кажется, работает, как ожидалось, но когда я вызываю метод 2-й раз, он не работает, как ожидалось ,
Итак, мой вопрос, почему существуют различия между результатами первой попытки и второй попыткой?
Спасибо!)
Я скопировал это на страницу и побежал его несколько раз подряд, и он побежал успешно для меня каждый раз. Возможно ли что-то еще? Или это одно и то же значение не передается каждый раз? – spinon
Я загрузил страницу, а затем в Firebug дважды выполнил строку с той же строкой. Хммм ... странно. – 2010-06-30 19:04:00
Вы уверены, что это код, который вы используете? Он не регистрирует окончательный счет в том или ином случае, когда вы вызываете эту функцию, и это не входит в какое-либо условие, поэтому всегда делайте это, прежде чем возвращать результат. – Guffa