javascript - jQuery/Javascript - 多重正则表达式验证

标签 javascript jquery html validation

您将如何在 jQuery 或 JS 中验证 2 个不同的正则表达式?

我的 JS 代码:

function validate(){
    var MyField = document.getElementById('MyField');
    if (MyField.value == null || !MyField.value.toString().match(/^(\d{3})-?\d{2}-?\d{4}$/) || !MyField.value.toString().match(/^(\d{2})-?\d{7}$/));
    alert('Ivalid Entry ...'); 
    return false;
}

我的 HTML:

<form action="">
  <input id="MyFIeld" name="MyField" type="text" />
  <input type="submit" value="Submit" onClick="validate();" />
</form>

基本上是为了正确设置税号和 SSN 格式。 ##-####### 或者 ###-##-#### ... 我对 JS 或 jQuery 解决方案持开放态度……非常感谢所有帮助。

最佳答案

在这种情况下我通常做的是拥有一个正则表达式测试“库”:

var regexTest = function() {
   this.TaxId = /^(\d{2})-?\d{7}$/;
   this.SSN = /^(\d{3})-?\d{2}-?\d{4}$/;
}

这会分隔您的正则表达式,以防因某种原因需要更改它。相信我,这种事时不时就会发生。 (也许不是 SSN/TaxId,但这是一个很好的做法)

然后我设置一个类似于您所拥有的事件 block (jQuery 使这很容易)以提供即时反馈:

$("#MyField").bind("blur keyup",
   function() {
      var myVal = $(this).val(); // should store $(this) in a var instead
      if(regexTest.SSN.test(myVal) || regexTest.TaxId.test(myVal)) {
         $(this).css("background-color", "");
      } else {
         $(this).css("background-color", "#FF0000");
      }
   }
);

我知道这不会在提交时验证,但它会在用户键入时向他们提供反馈。 (只要您保持验证简单,开销也不是很糟糕。)然后对数据服务器端执行验证(人们可以绕过验证检查),您应该会很好。是的,它不会在提交之前验证数据,但如果用户看到红色框,他们就知道这是错误的数据。

当然,正如一些评论中所述,有验证库,但有时我喜欢编写自己的验证库。 ;)

关于javascript - jQuery/Javascript - 多重正则表达式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170263/

相关文章:

javascript - Highcharts - 如何正确更新 VUMeter 的 series[0].data 和 yAxis 标题?

javascript - 将 jQuery 插件转换为 es6 模块

javascript - 使用过滤器获得正确的选择选项

javascript - CSS3 动画从左到右和从右到左切换

javascript - 将数字添加到 'click' 上的数组

javascript - RegExp 与使用简单的正则表达式文字不同

javascript - JQuery - 检查每个动态添加的按钮是否被点击

javascript - 如何从html调用嵌套的jquery函数?

html - 我怎样才能让div出现在同一行

javascript - Html5 输入 slider 未更新