【问题标题】:regex for numbers comma and space数字逗号和空格的正则表达式
【发布时间】:2013-09-27 14:52:32
【问题描述】:

我有一个文本区域,用户可以在其中输入美国邮政编码,用逗号或(逗号和空格)分隔。

可能是这样的 12345,45678,89654

以下正则表达式正在运行,正在删除不允许的字符:

$object.val($object.val().replace(/[^\d\, ]/g, ''));

我想增强它,以便

  1. 我总是应该在开头有 5 位数字
  2. 5位数字后应有逗号或逗号加空格
  3. 逗号或(逗号和空格)不应位于字符串的最后。结尾必须是 5 位数字。

这也需要解决复制粘贴问题。用户可以复制粘贴邮政编码的无效长度。

谢谢

【问题讨论】:

  • 你有没有想过 jQuery maskedinput 插件?它对我很有用,而且我没有冲突。 digitalbush.com/projects/masked-input-plugin
  • 您是否尝试过搜索可以帮助您完成此任务的可能答案?这里的那个怎么样 - stackoverflow.com/questions/160550/…
  • 我建议不要裁剪输入文本,而是在它们无效时显示。
  • 您忽略了新的 9 位数(首选)邮政编码:12345-5432。这是个好主意吗?

标签: javascript regex


【解决方案1】:

使用这个正则表达式: ^\d{5}(, ?\d{5})*$

指定5位开头:^\d{5} 以及任意数量的其他逗号、空格和 5 位数字组合:(, ?\d{5})*

【讨论】:

    【解决方案2】:

    你可以使用:

    var s='12345,45678, 12345';
    var m = s.match(/^(?:\d{5},\s?)*\d{5}$/);
    

    【讨论】:

    • 我需要在用户输入数字时限制不允许的字符。这对于模糊或提交的验证很有用。
    • 没有收到您的评论。这将不允许任何不允许的字符。
    【解决方案3】:
    <html>
        <head>
            <title></title>
            <script type="text/javascript">
                function Validate(txt) {
                    txt.value = txt.value.replace(/[^, 0-9]+/g, '');
                }
            </script>
        </head>
        <body>
            <form>
                <input type = "text" id ="txt" onkeyup = "Validate(this)" />
            </form>
        </body>
    </html>
    

    【讨论】:

    • 之后,一个空格然后0-9
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多