2011-10-23 16 views
1

什麼是更好的正則表達式來過濾文本通過形式submited爲了阻止HTML文本和JavaScript代碼?jQuery:在Ajax引擎過濾文本

下面是我在用的:

(function($){ 
$.fn.extend({ 
filter_input: function(options){ 
    var defaults = { 
     regex:".*", 
     live:false 
    } 
    var options = $.extend(defaults, options); 
    var regex = new RegExp(options.regex); 
    function filter_input_function(event){ 
     var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0; 
     // 8 = backspace, 9 = tab, 13 = enter, 35 = end, 36 = home, 37 = left, 39 = right, 46 = delete 
     if (key==8 || key==9 || key==13 || key==35 || key==36|| key==37 || key==39 || key==46){ 
      if ($.browser.mozilla){ 
       if (event.charCode==0 && event.keyCode==key){ return true; } 
      } 
     } 
     var string = String.fromCharCode(key); 
     if (regex.test(string)){ return true; } 
     return false; 
    } if (options.live){ 
     $(this).live('keypress', filter_input_function); 
    } else { 
     return this.each(function(){ 
      var input = $(this); 
      input.unbind('keypress').keypress(filter_input_function); 
     }); 
    } 
} 
}); 
    //$('textarea').filter_input({regex:'[a-zA-Z0-9_()\+\-$&%@.,!;?]', live:true}); 
    $('textarea').filter_input({regex:'[a-zA-Z0-9]',live:true}); 

})(jQuery); 

感謝。

回答

0

JavaScript永遠不是一個100%安全的解決方案,所以不要依賴它。你必須有服務器端的過濾器來確保你的數據。無論如何,如果你想過濾javascript中的數據,並且你想拒絕html標籤,你可以接受所有的字符,但'<'和'>'。

+0

當然,但我希望做出這第一個過濾器。 – Roger

+0

@Roger我更新了我的答案。 –

+0

小菜一碟:'正則表達式:'[^ <>]'',謝謝。 – Roger