JavaScript利用正则表达式过滤特殊字符,关键之处是正则表达式的正确性和完整性,保证常见特殊字符都可以过滤掉。再参考文章的基础上,添加了过滤掉“\”特殊字符的功能,实际就是“\\\\”来实现。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>javaScript过滤特殊字符</title> <style type="text/css"> body{ width:80%; background-color:#FFC; height:100px; font-size:14px; font-family:"Times New Roman", Times, serif; font-stretch:expanded; font-style:inherit; font-variant:inherit; font-weight:bold; } #div1{ text-align:center; width:100%; height:100%; line-height:inherit; } #btn{ font:Georgia, "Times New Roman", Times, serif; font-size-adjust:inherit; font-weight:bold; background-color:#C96; alignment-adjust:after-edge; alignment-baseline:baseline; word-break:break-all; width:120px; height:30px; font-size:16px; animation:ease; } </style> <script type="text/javascript"> /** * 过滤字符串函数 **/ function filterStr(str) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\]\\\\.<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%+_]"); var specialStr = ""; for(var i=0;i<str.length;i++) { specialStr += str.substr(i, 1).replace(pattern, ''); } return specialStr; } /** * 检测过滤字符串函数 **/ function checkStr() { var str = document.getElementById("pContent").innerHTML; alert("过滤之前的字符串:" + str); str = filterStr(str); alert("过滤之后的字符串:" + str); } </script> </head> <body> <div id="div1"> <p id="pContent">张三huhnjhj$%$^%^%&^*&<>?{}{{[]()_+|@~`$378748hyfgtyt35451fdhjdsh&%^^&$#%%&^^*&(*%$%$f4857485 </p> <input type="button" id="btn" name="btn" value="过滤" onclick="checkStr()"/> </div> </body> </html>
直接不允许输入的解决方式:
<input type="text" placeholder="" style="" onkeyup="filterStr(this);" /> <script type="text/javascript"> function filterStr(obj) { var str = obj.value; console.log(str); var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\]\\\\.<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%+_]"); var specialStr = ""; for(var i=0;i<str.length;i++) { specialStr += str.substr(i, 1).replace(pattern, ''); } console.log(specialStr); obj.value = specialStr; } </script>
参考:https://blog.csdn.net/sure_viola/article/details/44589689
六月份竟然没产出,七月赶快写一篇。