如何限制要输入的文本框中的任何特定字符。我只想限制 ^ 和 %

Posted

技术标签:

【中文标题】如何限制要输入的文本框中的任何特定字符。我只想限制 ^ 和 %【英文标题】:How to restrict any specific characters in textbox to be entered. I want to restrict only ^ and % 【发布时间】:2018-11-15 03:16:59 【问题描述】:

我尝试了以下方式,但它限制了所有特殊字符。不确定如何仅限制特定字符。

 $(function()

$('#test').keypress(function (e) 
    var regex = new RegExp("^[a-zA-Z0-9-]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (regex.test(str)) 
        return true;
    

    e.preventDefault();
    return false;
);


);

<input type="text" id="test"/>

【问题讨论】:

你是说你愿意还是不愿意允许^% 【参考方案1】:

你只需要转义你的字符

var regex = new RegExp("[^\\^\\%]");

小提琴 ==> http://jsfiddle.net/6j8sa9qz/10/

如果您只想允许字符,只需删除第一个 ^

此外,由于正则表达式不是动态的,您可以在 keypress 函数之外声明它。否则,每次用户按键时都会一次又一次地声明它! 而且实际上你不需要返回true,所以你可以简化

$(function()
    var regex = new RegExp("[^\\^\\%]");
    $('#test').keypress(function (e) 

        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (!regex.test(str)) 
            e.preventDefault();
            return false;
        
    );


);

【讨论】:

【参考方案2】:

您可以简单地测试 char 是否与 either % or ^ 的正则表达式不匹配:

正则表达式是:

/%|\^/

这是你的代码:

$(function() 

  $('#test').keypress(function(e) 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    return !(/%|\^/.test(str))
  );


);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="test" />

【讨论】:

从技术上讲,这可以减少到return !(/%|\^/.test(str)),因为返回 false 会有效地防止默认等等。 其实群[%\^]%|\^ 工作。谢谢@Luca @Sampgun 我发现它们的比例为 2-4%【参考方案3】:

试试这个代码

下面将分配除 ^ 和 % 之外的所有大小写字母、数字和特殊字符

[a-zA-Z_0-9@\!#\$\&*()+=\-[]\\\';,\.\/\\\|\":<>\? ]

【讨论】:

以上是关于如何限制要输入的文本框中的任何特定字符。我只想限制 ^ 和 %的主要内容,如果未能解决你的问题,请参考以下文章

如何限制在 MFC 的文本框中键入的字符数?

限制字符串树枝

如何限制 MVC 中文本框中的字符长度?

Swift 4 或 Swift 5 中的 UITextView 用户输入文本验证:限制 Swift 中的特定字符

仅允许向前日期并阻止向后日期

限制表单输入文本字段中允许的字符数