2013-06-14 15 views
6

Złożoność hasła Regex wymaga, aby przy tworzeniu lub zmianie hasła następowały następujące cztery cechy: any three.Regex dla sprawdzania poprawności hasła w JavaScript

  • znaków Alpha - co najmniej 1 górna liter alfa
  • Alpha znaków - co najmniej 1 małe litery alfa charakter
  • znaki numeryczne - przynajmniej 1 znak numeryczny
  • znaki specjalne - co najmniej 1 specjalny charakter

próbuję z następującego kodu, ale jej nie działa dla special characters

(?=^.{6,}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.* 

chcę mój regex być sprawdzane przed 4 następujących przypadkach

przypadki meczów

  • H @ sło
  • Password1
  • p @ sło1
  • p @ 12345
+0

możliwe duplikat [RegEx kwestii zatwierdzania wytrzymałości hasło] (http://stackoverflow.com/questions/5834251/regex-question-for-password-strength-validation) – Toto

Odpowiedz

6

Myślę, że jednym regex będzie m w tym przypadku. Można łatwo zrobić coś

var count = 0; 

count += /[a-z]/.test(password) ? 1 : 0; 
count += /[A-Z]/.test(password) ? 1 : 0; 
count += /\d/.test(password) ? 1 : 0; 
count += /[@]/.test(password) ? 1 : 0; 

if(count > 2) { 
    alert('valid') 
} 
+0

Mogę to zrobić z pomoc z regex, to jest wymóg. :( Osiągnąłem to już w powyższy sposób, ale potrzebuję go w zwykłym Regeksie – sivanv

+0

To jest regex, ale wiele z nich. – elclanrs

+1

@ sivanv musisz także nauczyć się, że nie zawsze rozwiązaniem jest młotek, nawet jeśli problem na początek wygląda jak gwóźdź –

0

myślę, że trzeba to dla wszystkich znaków specjalnych TOO: [zaktualizowane do odrzucenia spacja]

$(document).ready(function(){ 
    $('input').change(function(){ 
    var count = 0; 
    var pass = $(this).val(); 
     count += /[a-z]/.test(pass) ? 1 : 0; 
     count += /[A-Z]/.test(pass) ? 1 : 0; 
     count += /\d/.test(pass) ? 1 : 0; 
     count += /[^\w\d\s]/.test(pass) ? 1 : 0; 
     (count>2 & !/[\s]+/.test(pass)) ? $(this).css('background-color','lime'):$(this).css('background-color','orange'); 
    }); 

}); 

i skrzypce: jsFiddle

3

myślę, że wyrażeń regularnych, których możesz użyć to:

(?=^.{6,}$)(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9]).* 

Nie jestem pewien, dlaczego masz tak wiele rators twojej regex ale ten pasuje jeśli:

  • (?=^.{6,}$) - String wynosi> 5 znaków
  • (?=.*[0-9]) - zawiera cyfrę
  • (?=.*[A-Z]) - zawiera wielką literą
  • (?=.*[a-z]) - zawiera małą literę
  • (?=.*[^A-Za-z0-9]) - Postać nie jest alfanumeryczna.

Regular expression image

+0

Ale potrzebuję jednej z trzech opcji, nie wszystkie 4. – sivanv

+0

@ sivanv Oh, ale czy nie działa Twój regex? Zobacz [to] (http://www.regex101.com/r/yR1dZ8) I możesz zmienić hasło pojedynczo, aby sprawdzić pozostałe. – Jerry

+0

+1 @Jerry za wymyślanie tak skonstruowanej odpowiedzi r .. – Shubh

2

Służy Regex:.

(?.^= 6,10 {$}) (?. = \ D) (= [AZ]) (? =. [AZ]) (? =. [! @ # $%^& *() _ +} {":; '?/>.<,]) (?!. \ s). $ **

+0

Działa dobrze, dodałem skrzypce. http://jsfiddle.net/sivanv/6upQc/2/ – sivanv

+0

nie działa nawet skrzypce, czy można sprawdzić ponownie ?, nawet/nie jest uciekł, jak by to działało? – CME64

+0

@ CME64 jest poprawny. Twoje skrzypce nie działa. – Shubh

Powiązane problemy