2011-08-24 105 views
0

我想允许一个列表中的某些字符,并阻止其他列表中的其他列表。允许并防止正则表达式中的某些字符?

让这些:

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

防止这些:

[^[email protected]#$%^&*_+] 

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

(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 ,.)(][^[email protected]#$%^&*_+]/ 
        return regEx.test(keychar); 
       }); 
      }); 
     } 
    }); 
})(jQuery); 

回答

4

your're测试什么是其次无效字符有效字符。只要寻找允许的字符。如果失败了,你就完成了,对吧?

+0

上帝......我是个笨蛋 –

+0

只有当他锚定表达式'/^[允许的字符] + $ /'。 –

+0

@Felix:在这种情况下按键不一定总是被称为字符。 –

相关问题