11

単純な正規表現があります。

[A-z]{2}[0-9]{3})$/g以下の内部:

regForm.submit(function(){
  if ($.trim($('#new-usr').val()).match(/([A-z]{2}[0-9]{3})$/g)) {
    alert('No');
    return false;
  }
});

'ab123'これは、のようなものがアラートを出し、アラートを'ab1234'出さないことを正しく読んでいます。ただし、'abc123'まだアラートをスローしています。私はそれが必要なので、2文字の後に3つの数字が続く場合にのみアラートをスローします。

4

3 に答える 3

16

/^[A-z]{2}[0-9]{3}$/g代わりに試してください。

文字列全体が一致する必要があることを指定する必要があります。それ以外の場合は、強調表示された部分が一致します:bc123

()(グループは本当に必要ないので、'は省略しました。)

ところで、あなたはあなたが欲しい[A-z]だけでなく、本当に欲しい[A-Za-z]ですか?

于 2010-12-02T11:40:33.797 に答える
7

キャラクタークラス[A-z]はおそらくあなたが必要とするものではありません。

なんで?

文字クラスは、とりわけ、の[A-z]ようなアルファベット以外の文字と一致します。[]

これを証明するJSフィドルリンク。

このW3schoolチュートリアルでは、これを誤って推奨しています。

小文字のみが必要[a-z]
な場合は使用大文字のみが必要[A-Z]
な場合は両方を使用する必要がある場合:[a-zA-Z]

文字列のどこかに2文字の後に3桁の数字がある場合に文字列を照合する場合は$、パターンからエンドアンカーを削除するだけです。

[a-z]{2}[0-9]{3}

2文字の後に3桁の数字があり、他に何もない場合に文字列を照合する場合は、開始アンカー^と終了アンカー$の両方を次のように使用します。

^[a-z]{2}[0-9]{3}$
于 2010-12-02T11:40:08.890 に答える
1

または、次を使用することもできます。

/\b([A-z]{2}[0-9]{3})\b/g

文字列に複数の単語が含まれていて、1つの単語に一致させようとしている場合。

于 2010-12-02T11:49:00.763 に答える