【问题标题】:Force different characters at different positions在不同的位置强制使用不同的字符
【发布时间】:2012-10-04 17:15:53
【问题描述】:

我目前正在进行一个项目,我需要使用邮政编码从数据库中获取街道/城市详细信息。荷兰邮政编码使用“1111 AA”格式,我希望将其输入单个输入字段,同时强制前四个字符为数字,后两个字符为字母。

我已经在谷歌上搜索了很多,找到了强制其中一个的方法,但没有一个可以将它组合成一个输入字段,而且我似乎不够狡猾,无法自己组合它们。

谢谢。

【问题讨论】:

  • 你应该了解一下正则表达式

标签: javascript html input numerical alphabetical


【解决方案1】:

我们在很多网站上都使用它,尤其是手机#s

http://digitalbush.com/projects/masked-input-plugin/

【讨论】:

    【解决方案2】:

    要处理您输入的特定模式,请在验证表单输入的 javascript 函数中尝试这样的操作:

    var pattern = new RexExp( '[0-9]{4} [A-Z]{2}' );
    if( inputFieldValue.search( pattern ) == -1 )
    {
        // throw error condition.
    }
    else
    {
        // The pattern matched. Continue on.
    }
    

    【讨论】:

      【解决方案3】:

      这终于是一个问题,正则表达式是一个合适的解决方案。

      试试这个:

      var zip = "1111 AA"
      var regex = new RegExp("^[0-9]{4}\\s?[A-Z]{2}$");
      regex.test(zip);
      

      请注意,这将不允许使用小写字符,并允许使用不含空格的邮政编码(例如:1111AA)。尝试一些谷歌搜索以了解如何允许或禁止这些。

      【讨论】:

      • 是的,你应该使用它。如果您不知道如何使用,请使用 Google RegEx。
      • 空白的东西真的不是问题,我已经把它放宽了,所以1111XX可以输入1111XX。 $zipCode = $_GET["q"]; $count = substr_count($zipCode, ' '); if ($count == '0') { $zip = str_split($zipCode, 4); $zipCode = $zip[0].' '.$zip[1]; } 但我不只是想检查值是否是正确的格式,我并没有在物理上禁止它们使用前四个字母字符和后两个数字字符。
      【解决方案4】:

      您可以为此使用新的 html5 pattern 属性:

      <form>
         <input name="zipcode" type="text" pattern="\d{4}\s?[A-Z]{2}" length="7" />      
         <input type="submit" />
      </form>​​​​​​​​​​​​​​​​​​​​​​​​
      

      如果该属性不受支持,您可以使用 javascript 解决方案,在提交之前使用 regex 检查输入字段,如下所示:

      var pattern = /[0-9]{4}\s?[A-Z]{2}/;
      string.match(pattern);
      

      看看demo fiddle

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多