js过滤特殊字符

时间:2022-12-19 17:27:31

转自:http://blog.csdn.net/you23hai45/article/details/21120119

JavaScript过滤特殊字符


1、设计实例

[html]  view plain copy js过滤特殊字符 js过滤特殊字符
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>JavaScript过滤特殊字符</title>  
  6. <style type="text/css">  
  7.     body{  
  8.         width:80%;  
  9.         background-color:#FFC;  
  10.         height:100px;  
  11.         font-size:14px;  
  12.         font-family:"Times New Roman", Times, serif;  
  13.         font-stretch:expanded;  
  14.         font-style:inherit;  
  15.         font-variant:inherit;  
  16.         font-weight:bold;  
  17.     }  
  18.     #div1{  
  19.         text-align:center;  
  20.         width:100%;  
  21.         height:100%;  
  22.         line-height:inherit;  
  23.     }  
  24.     #btn{  
  25.         font:Georgia, "Times New Roman", Times, serif;  
  26.         font-size-adjust:inherit;  
  27.         font-weight:bold;  
  28.         background-color:#C96;  
  29.         alignment-adjust:after-edge;  
  30.         alignment-baseline:baseline;  
  31.         word-break:break-all;  
  32.         width:120px;  
  33.         height:30px;  
  34.         font-size:16px;  
  35.         animation:ease;  
  36.     }  
  37. </style>  
  38. <script type="text/javascript">  
  39.     /**  
  40.       * 过滤字符串函数  
  41.       **/  
  42.     function filterStr(str)  
  43.     {  
  44.         var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%+_]");  
  45.         var specialStr = "";  
  46.         for(var i=0;i<str.length;i++)  
  47.         {  
  48.              specialStr += str.substr(i, 1).replace(pattern, '');   
  49.         }  
  50.         return specialStr;  
  51.     }  
  52.       
  53.     /**  
  54.       * 检测过滤字符串函数  
  55.       **/  
  56.     function checkStr()  
  57.     {  
  58.         var str = document.getElementById("pContent").innerHTML;  
  59.         alert("过滤之前的字符串:" + str);  
  60.         str = filterStr(str);  
  61.         alert("过滤之后的字符串:" + str);  
  62.     }  
  63. </script>  
  64. </head>  
  65.   
  66. <body>  
  67.    <div id="div1">  
  68.       <p id="pContent">张三huhnjhj$%$^%^%&^*&<>?{}{{[]()_+|@~`$378748hyfgtyt35451fdhjdsh&%^^&$#%%&^^*&(*%$%$f4857485</p>  
  69.       <input type="button" id="btn" name="btn" value="过滤" onclick="checkStr()"/>  
  70.    </div>  
  71. </body>  
  72. </html>  

2、设计结果

(1)初始化时

js过滤特殊字符

(2)单击“过滤”按钮

js过滤特殊字符

(3)单击“确定”按钮后

js过滤特殊字符


3、说明

     JavaScript利用正则表达式过滤特殊字符,关键之处是正则表达式的正确性和完整性,保证常见特殊字符都可以过滤掉。

      但是,这个正则表达式有一个弊端,不能过滤掉“\”特殊字符。


自定义:

在chrome浏览器中可以进行js正则表达式的简单测试:

匹配数字:
(/^([0-9]+)$/.test("123"))

匹配非数字:
(/^([^\d]+)$/.test("123"))

非数字非*号
(/^([^\d\*]+)$/.test("123abc*"))
false
(/^([^\d\*]+)$/.test("abc*"))
false
(/^([^\d\*]+)$/.test("abc"))
true

不能是以下特殊符号:
[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%+_]

(/^([^\~\!\@\#\^\&\*\(\)\=\|\{\}\'\:\;\"\,\\\.\/]+)$/.test("abc"))


(/^([^\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\"\,\\\[\]\.\<\>\/\?\~\!\@\#\¥\……\&\*\(\)\——\|\{\}\【\】\‘\;\:\”\“\'\。\,\、\?\%\+\_]+)$/.test("abc"))
true


s1 = "abc\"test\""
"abc"test""
s1
"abc"test""
(/^([^\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\"\,\\\[\]\.\<\>\/\?\~\!\@\#\¥\……\&\*\(\)\——\|\{\}\【\】\‘\;\:\”\“\'\。\,\、\?\%\+\_]+)$/.test(s1))
false


上述特殊符号中允许使用\.\_\-
(/^([^\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\"\,\\\[\]\<\>\/\?\~\!\@\#\¥\……\&\*\(\)\——\|\{\}\【\】\‘\;\:\”\“\'\。\,\、\?\%\+]+)$/.test(s1))