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

How to restrict any specific characters in textbox to be entered. I want to restrict only ^ and %

我试过下面的方法,但它限制了所有的特殊字符。不确定如何限制特定字符。

 $(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"/>

你只需要转义你的字符

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

Fiddle ==> http://jsfiddle.net/6j8sa9qz/10/

如果您只想允许字符

,只需删除第一个 ^

此外,由于正则表达式不是动态的,您可以在按键函数之外声明它。否则,每次用户按下一个键时,它都会被一次又一次地声明! 实际上你不需要 return 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;
        }
    });


});

试试这个代码

以下将允许除 ^ 和 %

之外的所有大小写字母、数字和特殊字符
[a-zA-Z_0-9@\!#$\&*()+=\-[]\\';,\.\/\{\}\|\":<>\? ]

您可以简单地测试字符是否与 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" />