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

时间:2018-06-05 15:09:51

标签: javascript jquery validation jquery-ui javascript-events

我尝试了以下方式,但它限制了所有特殊字符。不知道我怎么能只限制特定字符。

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

3 个答案:

答案 0 :(得分:1)

你只需要逃避你的角色

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

小提琴==&gt; 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;
        }
    });


});

答案 1 :(得分:1)

您可以简单地测试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" />

答案 2 :(得分:0)

试试此代码

下面将分享所有Case Case,Numbers&amp;除^和%

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