【问题标题】:Validate text input to match Canadian postal code (e.g. "A1S2S3")验证文本输入以匹配加拿大邮政编码(例如“A1S2S3”)
【发布时间】:2014-12-05 12:21:49
【问题描述】:

这里的错误是不能输入任何字符:

$(document).ready(function() {
  $('#t').keypress(function(e){
    var txt = String.fromCharCode(e.which);
    console.log(txt + ' : ' + e.which);
    if(!txt.match(/^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$/)){
      return false;
    }
  })
});

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    pattern 属性现在得到广泛的支持。所以你可以把它添加到<input>

    <input pattern="^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$" />
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      <input type="text" id="postCode" placeholder="Enter postcode">
      <span id="result"></span>
      
      var pattern = /[ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ][0-9][ABCEFGHJKLMNPRSTVWXYZ][0-9]/,
      $result = $("#result");
      
      $('#postCode').keyup(function(){
        var val = this.value
        if(!val.match(pattern)){
          $result.text("invalid");
        } else {
          $result.text("valid");      
        }
      });
      

      这是demo

      【讨论】:

      • 我只会添加一个\s*?在前 3 个字符和后 3 个字符之间,以说明在两者之间写一个空格的常见用法。就像北极的邮政编码一样:H0H 0H0
      • 是的,不知道正则表达式。不过,我确信它可以做一些工作。
      • 但是如何限制与正则表达式不匹配的文本框中的输入..?
      • 提交时验证表单。不要试图即时执行此操作。
      • 看看它是一个易于使用的输入模式jsfiddle.net/iffikhan30/nfh3k75y/5
      猜你喜欢
      • 2015-07-06
      • 1970-01-01
      • 2012-06-24
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多