0

jQuery(またはJavascript)で文字列をテストするifステートメントを作成しようとしています。条件は次のとおりです。

  1. 6〜8文字である必要があります。
  2. 最初の文字を数字にすることはできません。
  3. 1つの数字、1つの小文字、および1つの大文字を含める必要があります。

これが私の正規表現コードです:

((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})

正規表現コードをテストするWebサイトでテストしましたが、正常に動作します。

現在の私のifステートメントは次のとおりです。

if(((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8}).test(strOldPassword))
{
    alert("Something");
}

ただし、Webページの読み込み時に構文エラーが発生し、正規表現に問題があると表示されます。

誰かが私が間違っていることを見つけるのを手伝ってもらえますか?ありがとう。

4

3 に答える 3

3

JavaScriptで正規表現を定義する方法は2つあります。

  1. 構文を使用し/.../ます。

    /((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})/
    
  2. コンストラクターで正規表現を文字列として受け入れるRegExpオブジェクトのインスタンスを作成する。

    new RegExp("((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})")
    

あれは、

if(/((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})/.test(strOldPassword)){
  alert("Something");
}
于 2013-01-21T21:10:16.457 に答える
1

次のことを試してください。

if(/^(?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})$/.test(strOldPassword))
// --                                                --

/.../正規表現リテラルを区切るので、パーサーはjavascriptではなく正規表現として何を解析するかを認識します(一重引用符で文字列を区切るのとよく似ています)。

^...$文字列全体が一致する必要があることを示します(そうでない場合は、少なくとも6〜8文字をテストすることになります)。

// -- ... --私が何を追いかけたかを示すための単なるコメントです。

于 2013-01-21T21:14:36.830 に答える
0

とった!

if (!(/((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})$/.test(strOldPassword)))
{
    jQuery('#txtOldPassword').addClass('error');
}

ヒントをありがとう。

于 2013-01-21T21:31:23.153 に答える