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

六月份竟然没产出,七月赶快写一篇。