javascript regex if语句为2个不同的输入值

时间:2013-05-16 14:09:41

标签: javascript regex

我在表单字段上进行了以下验证:

$(".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个字符,则只能输入数字。

关于我能做什么的任何建议?

干杯,丹

1 个答案:

答案 0 :(得分:1)

我想你想要一个像这样的正则表达式:

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

|表示逻辑OR,因此如果其中一个成立,则匹配:

  • 1个字母后跟1个数字
  • 2个字母后跟6个数字
  • 9个数字

您提到您希望在第二种情况下匹配1或2个字母,但我不确定这是否符合您对8个字符的要求。您可以修改它以接受1或2个字母,总共7或8个字符,如下所示:

/^[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