允许,避免正则表达式中出现某些字符

Allow & prevent certain characters in a regular expression?

本文关键字:字符 正则表达式 允许      更新时间:2023-09-26

我想允许一些字符出现在一个列表中,而不允许其他字符出现在另一个列表中。

允许这些:

[A-Za-z0-9 ,.)(]

阻止这些:

[^~!@#$%^&*_+]

这是失败的
为什么会失败呢?

(function($) {
    $.fn.extend({
        standardOnly: function() {
            return this.each(function() {
                return $(this).keypress(function(e, text) {
                    var keynum;
                    var keychar;
                    var regEx;
                    var allowedKeyNums = [8, 9, 35, 36, 46]; // Backspace, Tab, End, Home, (Delete & period)
                    if (window.event) // IE
                        keynum = e.keyCode;
                    else if (e.which) // Netscape/Firefox/Opera
                        keynum = e.which;
                    else
                        keynum = e.keyCode
                    keychar = String.fromCharCode(keynum);
                    regEx = /[^#$]/ // Undesirable characters
                    // Test for keynum values that collide with undesirable characters
                    if ($.inArray(keynum, allowedKeyNums) > -1)
                        return regEx.test(keychar);
                    regEx = /[A-Za-z0-9 ,.)(][^~!@#$%^&*_+]/
                    return regEx.test(keychar);
                });
            });
        }
    });
})(jQuery);

你要测试的是一个有效的字符后面跟着一个无效的字符。只需查找允许的字符。如果失败了,你就完了,对吧?