0

以下のパターンのみが通過できる Javascript でユーザー名を検証する必要があります。

  1. ABC-DE-0001
  2. XEG-SS-21626
  3. FK1S-DAD-51345

私は現在使用して^[A-Z]{3}[\- ]?[A-Z]{2}[\- ]?[0-9]{4}$います。

上記のすべてのパターンを 1 つの文字列で検証するための改善点はありますか?

var v = document.getElementById('<%=txtCode.ClientID%>').value;
var patternForID = /^[A-Z]{3}[\- ]?[A-Z]{2}[\- ]?[0-9]{4}$/;
if (patternForID.test(v) == '') {
  sender.innerHTML = "Please enter Valid Remeasurement Code";
  args.IsValid = false;  // field is empty
}
4

1 に答える 1

1

次の正規表現は、3 つの例すべてに一致します。

^([A-Z]{3}|[A-Z0-9]{4})-[A-Z]{2,3}-[0-9]{4,5}$

これらの例から要件が何であるかを正確に伝えるのは難しいですが、上記の正規表現が一致するものは次のとおりです。

([A-Z]{3}|[A-Z0-9]{4})- 大文字 3 文字、または大文字と数字の 4 文字の任意の組み合わせ。

[A-Z]{2,3}- 2 つまたは 3 つの大文字。

[0-9]{4,5}- 4 桁または 5 桁。

それ-が唯一の合法的な区切り文字だと思ったので-、正規表現でリテラルにしました。セパレーターが本当にスペースまたは のいずれかである場合は-、元に戻し[- ]ます。また、?セパレーターの後に a を追加するとオプションになり、例に合わないようです。当然、セパレーターがオプションの場合は元に戻す必要があります。

あなたの例でRegexPalで動作することを確認してください。

于 2012-10-29T02:48:38.223 に答える