2012-02-10 26 views
0

這裏就是我想... 它的工作原理,如果我只是檢查,如果輸入的值大於8較小,但不工作檢查它至少包含1個字母和1個數字。我究竟做錯了什麼 ? =/檢查輸入包含8個字符分鐘,1個數字和1個字母最低

$(document).ready(function() { 

var jVal = { 
    'passWord' : function() { 

     $('body').append('<div id="nameInfo" class="info"></div>'); 

     var nameInfo = $('#nameInfo'); 
     var ele = $('#password'); 
     var pos = ele.offset(); 
     ra = /^[A-Za-z]+$/; 
     re = /^[0-9]+$/; 

     nameInfo.css({ 
      top: pos.top - 3, 
      left: pos.left + ele.width() + 15 
     }); 

     if (ele.val().length < 8 & re.test(ele.value) & ra.test(ele.value)) { 
      jVal.errors = true; 
      nameInfo.removeClass('correct').addClass('error').html('&larr; too short').show(); 
      ele.removeClass('normal').addClass('wrong'); 
     } 

     else { 
      nameInfo.removeClass('error').addClass('correct').html('&radic;').show(); 
      ele.removeClass('wrong').addClass('normal'); 
     } 
    } 

} 
$('#password').change(jVal.passWord); 
}); 

回答

2

你可以使用一個單一的正則表達式做的一切:

/^(?=.*\d.*)(?=.*[a-z].*)\w{8,}$/i 

的前兩段檢查這兩個數字,而整個字符串中的AZ字符,然後將最後一塊,確保它至少8字符。您可以在最後\w更改爲.,以便如果需要特殊字符。

+0

這個完美無缺。謝謝。 – JFFF 2012-02-10 16:50:44

6

ra檢查密碼是否全部是字母。 re檢查密碼是否全部是數字。它們是相互排斥的,因此不能同時存在。

相反,使用ra = /[a-z]/i; re = /[0-9]/;

編輯:此外,由於您使用jQuery,您應該在ele.val()而不是ele.value上進行測試。

相關問題