2013-06-14 4 views
6

La complessità della password Regex richiede che sia necessario applicare any three delle seguenti quattro caratteristiche durante la creazione o la modifica di una password.Regex per la convalida della password in Javascript

  • alfa caratteri - almeno 1 maiuscole caratteri alfa
  • caratteri alfa - contenere almeno 1 caso di caratteri alfa
  • caratteri numerici - almeno 1 carattere numerico
  • caratteri speciali - almeno 1 speciale carattere

sto cercando con il seguente codice, ma non il suo lavoro per 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]))^.* 

voglio che il mio regex per essere convalidato contro i seguenti 4 casi

casi Incontro

  • P @ ssword
  • Password1
  • p @ ssword1
  • p @ 12345
+0

possibile duplicato della [domanda RegEx per la convalida sicurezza della password] (http://stackoverflow.com/questions/5834251/regex-question-for-password-strength-validation) – Toto

risposta

6

Penso che una singola regex sarà m essy in questo caso. Si può facilmente fare qualcosa di simile

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

Posso farlo con aiuto di regex, questo è il requisito. :( L'ho già raggiunto usando il metodo sopra, ma ne ho bisogno in semplice Regex. – sivanv

+0

Questo è regex, ma più di essi. – elclanrs

+1

@sivanv devi anche imparare, che non sempre la soluzione è martello, anche se il problema a l'inizio sembra un chiodo –

0

penso che avrebbe bisogno di questo per tutti i caratteri speciali anche: [Aggiornamento a respingere spazio]

$(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'); 
    }); 

}); 

e il violino: jsFiddle

3

penso che un regex che è possibile utilizzare è:

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

Non sono sicuro del motivo per cui ne hai così tanti o ope ratori nella vostra espressione regolare, ma questo corrisponde a se:

  • (?=^.{6,}$) - String è> 5 caratteri
  • (?=.*[0-9]) - contiene una cifra
  • (?=.*[A-Z]) - Contiene una lettera maiuscola
  • (?=.*[a-z]) - Contiene una lettera minuscola
  • (?=.*[^A-Za-z0-9]) - Un carattere non alfanumerico.

Regular expression image

+0

Ma ho bisogno di una delle tre opzioni, non tutte le 4. – sivanv

+0

@sivanv Oh, ma la tua espressione regolare non funziona? Vedi [this] (http://www.regex101.com/r/yR1dZ8) E puoi cambiare la password una alla volta per controllare le altre – Jerry

+0

+1 @Jerry per avere una risposta così strutturata r .. – Shubh

2

Utilizzare questo Regex:?.

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

+0

Funziona bene, ho aggiunto un violino. http://jsfiddle.net/sivanv/6upQc/2/ – sivanv

+0

non funziona nemmeno il violino, potresti controllare di nuovo ?, anche il/non è sfuggito come funzionerebbe? – CME64

+0

@ CME64 è corretto .. Il tuo violino non funziona. – Shubh