2015-05-11 3 views
1

Я пытаюсь разработать выражение регулярных выражений для программы проверки пароля, которую я создаю с помощью JavaScript.Regex для проверки и сопоставления пароля

Требования

Пароль должен быть не менее семи символов в длину.

должен содержать по крайней мере один

  • заглавной буквы (AZ)
  • строчной буквы (аз)
  • (0-9)
  • специального символ (!? # @)

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

Заранее спасибо.

+1

Что вы пробовали? –

+1

У меня есть несколько тестов, вместо того чтобы иметь беспорядочное одно регулярное выражение, будет проще –

ответ

2

Думаю, что отдельный тест для каждого случая будет проще.

var valid = p.length > 6 && // At least 7 characters 
/[a-z]/.test(p) && // At least one lowercase letter (a-z) 
/[A-Z]/.test(p) && // At least one uppercase letter (A-Z) 
/\d/.test(p) && // At least one number (0-9) 
/[@#$%]/.test(p); // At least one special symbol 
+2

Попробуйте '/ [^ a-zA-Z0-9] /' для специальной проверки персонажа – Scopey

1

Попробуйте это я делюсь код JavaScript:

function CheckPassword(inputtxt) 
{ 
    var paswd = /^(?=.*[0-9])(?=.*[[email protected]#$%^&*])[[email protected]#$%^&*]{7,15}$/; 
    if (inputtxt.value.match(paswd)) 
    { 
     alert('Correct, try another...') 
     return true; 
    } 
    else 
    { 
     alert('Wrong...!') 
     return false; 
    } 
}  
0

Вы можете попробовать что-то вроде этого. Разделите Regex для разных правил проверки.

checkPwd = function() { 
    var str = document.getElementById('password').value; 
    if (str.length < 7) { 
     alert("too_short"); 
     return ("too_short"); 
    } else if (str.search(/\d/) == -1) { 
     alert("no_num"); 
     return ("no_num"); 
    } else if (str.search(/[a-z]/) == -1) { 
     alert("no lowercase letter"); 
     return ("no_lowercase_letter"); 
    } else if (str.search(/[A-Z]/) == -1) { 
     alert("no uppercase letter"); 
     return ("no_uppercase_letter"); 
    } else if (str.search(/[@#$%]/) == -1) { 
     alert("no_special_character"); 
     return ("no_special_character"); 
    } 
    alert("ok!!"); 
    return ("ok"); 
} 
+1

Добавил его в Fiddle: http://jsfiddle.net/JavaUIDeveloper/bm82c5nf/1 / –

0

Попробуйте это не уверен, что это удовлетворит вашу потребность полностью или нет!

/(?=.*\d)(?=.*[[email protected]#\$%\^\&*\)\(+=._-])(?=.*[a-z])(?=.*[A-Z]).{7,}/; 

(?=.*\d) : Check for digit 

`(?=.*[a-z])` : Check for atleast one lower case 

`(?=.*[A-Z])` : Check for atleast one upper case 

{7,}  : Check for min of 7 character 

(?=.*[[email protected]#\$%\^\&*\)\(+=._-]) : Check for special characters 

Надеюсь, это поможет!

0
/(?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)(?=.*?[^A-Za-z0-9\s]).{7}/.test(password) 

Положительные взгляды используются для проверки «хотя бы одного из» условий. Наконец, мы просто убеждаемся, что 7 символов, кроме новой строки, могут совпадать, и мы закончили.

Для «специальных символов» мы используем отрицательный класс символов [^A-Za-z0-9\s], но это, очевидно, гибко, и вы можете использовать что-то еще, что соответствует вашим потребностям.

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