2012-02-10 21 views
0

これは私が試したものです... 入力の値が8より小さいかどうかをチェックするだけですが、それは少なくとも1文字と1桁を含んでいます。私は間違って何をしていますか? =/入力に最小、1桁、最小1文字の8文字が含まれていることを確認してください

$(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 

最初の2枚の数字、文字列全体でAZの文字の両方をチェックした後、最後のピースが、それは、少なくとも8のですが保証文字。最後の\w.に変更して、必要に応じて特殊文字を使用することができます。

+0

これは完璧に機能しました。ありがとうございました。 – JFFF

6

raパスワードが完全に英字であるかどうかを確認します。 reは、パスワードが完全に数字かどうかをチェックします。それらは相互に排他的であり、したがって両方とも真実であることはできない。

代わりにra = /[a-z]/i; re = /[0-9]/;を使用してください。

EDIT:また、jQueryを使用しているため、ele.val()でテストする必要があります。ele.valueではなく、テストしてください。

関連する問題