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

标签 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 个字符,则只能输入数字。

关于我能做什么有什么建议吗?

干杯,丹

最佳答案

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

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

| 表示逻辑或,因此如果其中之一成立,它将匹配:

  • 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 

关于javascript regex if 语句用于2个不同的输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16589719/

相关文章:

javascript - 在数字数组中找出是否有任何数字接近数组中的任何数字

javascript - 更改窗口时视频仍在后台播放

regex - 从没有语料库的数据框中提取子词列表

javascript - 用 JavaScript/jQuery 替换 dom 对象中字符串的各种出现的最快、最可靠的方法

java - 用于提取括号之间的 3 位数字的正则表达式

javascript - 如果值相同则更新代码

javascript - ng用于在更新数组时不从列表中删除旧条目

javascript - 选中复选框时启用/禁用输入

php - preg_replace file_get_contents 中不包含单词的所有链接

java - java中正则表达式的近似匹配