【问题标题】:restrict characters in form field限制表单字段中的字符
【发布时间】:2012-01-17 17:16:50
【问题描述】:

我在表单中有一个 HTML 字段,并且使用 JS 和 Regex,我必须限制用户可以在该字段中插入的字符。表单的用户只能插入以下字符( ) * + ^ / X x,以及数字和空格(当他数字或粘贴不同的字符时,不会写入任何内容)。这可能吗?我需要正则表达式,我终于知道如何使用 JS。

【问题讨论】:

    标签: javascript html regex validation


    【解决方案1】:

    试试这个正则表达式

    [^\(\)\*+\^/Xx0-9 ]
    

    在这里,我们试图找到一个不包含任何允许字符的模式。如果你发现它,这意味着输入的字符是错误的。

    【讨论】:

      【解决方案2】:

      对此没有正确或错误的答案。
      通常,使用特定条件的逻辑偏差进行检查的成本较低。
      如果说whats allowed 听起来更好,那么使用允许的(正)字符类。

      允许的类:[()*+^/Xx0-9 ],检查:<space>(-+/-9X\^x

      不允许的类:[^()*+^/Xx0-9 ],检查:\0-\37!-',\-.:-W:-WY-\]_-wy-\377

      从统计上讲,如果输入的 %99 数据是有效的,那么“允许”类在这方面的工作就会减少
      不必检查每个字符或范围。
      “不允许”类必须检查每个范围。

      在这种特殊情况下,负类有更多的范围和字符要检查,它的边界
      如果大部分数据无效,效率会更高,

      【讨论】:

        【解决方案3】:

        关于:

        [^\(\)\*+\^/Xx0-9 ]
        

        这些字符都不需要在集合中转义(但可以这样做)。

        如果您想限制用户类型(这使用 jquery 方法):

        $('#in1').keyup(function (evt) {
            var content = $('#in1').val();
            $('#in1').val(content.replace(/[^()*+^/Xx0-9]/g, ""));
            return true;
        });  
        

        其中 'in1' 是输入的 id。

        【讨论】:

        • 这不会限制来自Paste 仅使用鼠标的输入。
        • @StephenP:如何检查?
        • @3000 - 有一个 onpaste 事件。取消事件(通过返回 false 或实际的“取消”API)可防止粘贴发生。我至少有一个案例,我使用以下所有事件作为验证输入的地方:onkeyuponchangeonpasteonbluronselectionchange
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多