1

私はフォームフィールドで次の検証を行っています:

$(".controlscard input").blur(function() {
var re = /^(?:[0-9]+[a-z]|[a-z]+[0-9])[a-z0-9]*$/i;
if(re.test(document.getElementById("register_coachcard_no").value))
{
   $(this).css('border-color','green');
     $(this).siblings('.info').css('display','none');
     $(this).siblings('.error').css('display','none');
     $(this).siblings('.valid').css('display','inline-block');   
    $("#email_error40111").hide();

}
else
{
      $(this).css('border-color','red');
     $(this).siblings('.info').css('display','none');
     $(this).siblings('.valid').css('display','none');
     $(this).siblings('.error').css('display','inline-block');
   $('#registerErrors').show();
  $('#email_error40111').remove();
  $('#registerErrors').append('<p id="email_error40111">Coachcard must contain at least 1 letter and 1 number</p>');
}});

上記は基本的に、入力された内容に1文字と1数字が含まれているかどうかをチェックします。

値の長さが 8 文字の場合、最大 2 文字をチェックし、次に 6 つの数字をチェックする必要がある場所に、何かを配置する必要があります。

値の長さが 9 文字の場合、数字のみを入力できます。

私ができることについて何か提案はありますか?

乾杯、ダン

4

1 に答える 1

1

次のような正規表現が必要だと思います:

/^[a-zA-Z]\d|[a-zA-Z]{2}\d{6}|\d{9}$/i 

は論理 OR を示します。|したがって、これらのいずれかが成立する場合、一致します。

  • 1 文字の後に 1 数字
  • 2 文字の後に 6 つの数字
  • 9つの数字

2番目のケースで1文字または2文字を一致させたいとおっしゃいましたが、これが8文字の要件にどのように適合するかわかりませんでした. 次のように、合計 7 または 8 文字に対して 1 または 2 文字を受け入れるように変更できます。

/^[a-zA-Z]\d|[a-zA-Z]{1,2}\d{6}|\d{9}$/i 

編集:

コメントから、調整された正規表現:

/^[a-zA-Z]\d|[a-zA-Z]{1}\d{7}|[a-zA-Z]{2}\d{6}|\d{9}$/i 
于 2013-05-16T14:19:54.680 に答える