3

パスワードを検証して数字、小文字、大文字を含めるための正規表現があります。

以下のものは正常に動作します。しかし、これをjQuery検証で使用すると:

txtPassword: {
    required: true,
    regex: Regex
}

Regex = (?=^.{8,16}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+}{":;/'?/>.<,])(?!.*\s).*$

'しかし、問題はJavascriptでの一重引用符です。誰かがこれを解決するのを手伝ってくれませんか?ありがとうございました。

4

1 に答える 1

2

この正規表現で修正する必要があることがいくつかあります。

  • パスワードの先読みチェックでは、数量詞のない期間があります。したがって、常にそのチェックに失敗します。たとえば、番号チェックの場合は、の(?=.*\d)代わりにを使用する必要があり(?=.\d)ます。
  • スラッシュを使用して文字を/エスケープするのではなく、バックスラッシュを使用します\。最後の文字クラスのフォワードスラッシュで誤ってエスケープしました。
  • 文字クラス内の特殊文字またはメタ文字は、閉じ括弧(])、円記号(\) 、括弧()、^およびハイフン(-)のみです。したがって、一重引用符によるものではありません。犯人は逃げられないあなたのカレットです。

^引用符の代わりにカレットがエスケープされているこの正規表現を試してください'

(?=^.{8,16}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%\^&*()_+}{":;'?/>.<,])(?!.*\s)^.*$

私はあなたの質問によって、あなたは正規表現がパスワードを検証することを意味したと仮定しています:

  • 少なくとも1つの番号
  • 少なくとも1つのローワーチェイスキャラクター
  • 少なくとも1つの大文字
  • セットから少なくとも1つの特殊文字!@#$%^&*()_+}{":;'?/>.<,
  • 8〜16文字の長さ

これが当てはまる場合は、明確な要件で質問を更新してください。


RegexPalで正規表現で遊ぶ


jQueryベースのコード。ここでこれをいじる:

var regex = /(?=^.{8,16}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%\^&*()_+}{":;'?/>.<,])(?!.*\s)^.*$/g;
//if(regex.test($('#txtPassword').val())){ alert('Match'); }else{alert('No Match')}
if (regex.test('P@sSw0rD')) {
    alert('Match');
} else {
    alert('No Match');
}​
于 2012-09-18T01:33:33.700 に答える