2016-11-27 36 views
0

我正在做一個強度密碼測試,我試圖檢查密碼是否有大寫和小寫字符。我使用了兩個正則表達式,他們幾乎都在工作;與代碼就在這裏:密碼強度正則表達式與數字

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; 
 
    }

當我鍵入數字,或者只是一個數字,如「1」,上下成爲現實。

我並不擅長正則表達式,我犯了一個錯誤嗎?

+2

'[^ ...]'是反向字符類。它匹配集合中的任何字符*而非*。 – melpomene

回答

0

看看以下(又名你upperCase正則表達式匹配非大寫字符)它使用測試來返回一個布爾密碼是否包含大寫和小寫。你會看到它如何測試各種密碼的正則表達式。

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

除非您按每行代碼支付;你可以簡單的寫:

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

這也修復在你的代碼,你用[^]其否定匹配的bug;