2016-11-27 6 views
0

Ich arbeite an einem Stärke-Passwort-Test, und ich versuche zu überprüfen, ob das Passwort obere und untere, Groß-/Kleinschreibung hat. Ich benutze zwei reguläre Ausdrücke und sie arbeiten fast; nur hier mit dem Code:Passwort Stärke Regex mit Zahlen

var upper = false; 
 
    var lower = false; 
 
    var upperCase= new RegExp('[^A-Z]'); 
 
    var lowerCase= new RegExp('[^a-z]'); 
 
    
 

 

 
    if (password.match(upperCase)){ 
 
     upper = true;  
 
    } 
 
    if (password.match(lowerCase)){ 
 
     lower = true; 
 
    }

Wenn ich Zahlen tippen bin, oder einfach nur eine Ziffer, wie "1", obere und wahr werden niedriger.

Ich bin nicht wirklich gut mit Regex, habe ich einen Fehler gemacht?

+2

'[^ ...]' ist eine umgekehrte Zeichenklasse. Es passt zu jedem Zeichen * nicht * in der Menge. – melpomene

Antwort

0

Werfen Sie einen Blick auf die folgenden Mit diesem Test wird ein Boolescher Wert zurückgegeben, der angibt, ob das Kennwort eine Groß- und Kleinschreibung enthält. Sie werden sehen, wie beide Regexes gegen verschiedene Passwörter getestet werden.

var upperCase= new RegExp('[A-Z]'); 
 
    var lowerCase= new RegExp('[a-z]'); 
 
    
 

 
function test(password) { 
 
    return [ upperCase.test(password), lowerCase.test(password)]; 
 
    } 
 

 
console.log(test("Abc")); 
 
console.log(test("abc")); 
 
console.log(test("123"));

0

Sofern Sie nicht pro Codezeile bezahlt werden; Sie könnten einfach schreiben:

var upper = password.match(/[A-Z]/); 
var lower = password.match(/[a-z]/); 

Dies auch den Fehler im Code behoben, wo Sie [^] verwenden, die das Spiel negiert (aka, Ihre upperCase regexp Spiel nicht-Groß Zeichen)