js 正则过滤特殊字符[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%+_]

2020-02-22 17:33:15

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

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

我们也职能通过 indexOf来检测里面有没有\字符,判断两次呗。

<!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="过滤" οnclick="checkStr()"/>  
</div>
</body>	
</html>


  • 2018-05-21 13:54:06

    laravel-nestedset:多级无限分类正确姿势

    Nested Set Model 是一种实现有序树的高明的方法,它快速且不需要递归查询,例如不管树有多少层,你可以仅使用一条查询来获取某个节点下的所有的后代,缺点是它的插入、移动、删除需要执行复杂的sql语句,但是这些都在这个插件内处理了!

  • 2018-06-02 00:29:58

    Android实现沉浸式状态栏的那些坑

    最近项目需要实现沉浸式的状态栏,其实我在之前就了解过Android的沉浸式,发现有些棘手就放弃了,但是此次是公司的项目需要的,就花了几天把这个问题搞定了,在此记录一下,并mark几个坑。 首先,沉浸式是Android 4.4及以上才有的,在后续的5.0及6.0上面都增加了一些相关支持,于是问题就不太好办了。先看我实现的效果:

  • 2018-06-02 00:30:35

    Android 解决沉浸式状态栏下,输入法弹出,布局不会自动调整的BUG

    在开发中,如果输入框在布局的底部。在弹出输入发时,为了使输入法不遮挡输入框通常有两种做法: 1.将布局压缩(Activity的android:windowSoftInputMode属性设置为”adjustResize”)。 2.移动布局,将布局顶到输入框之上(Activity的android:windowSoftInputMode属性设置为”adjustPan”)

  • 2018-06-02 00:31:27

    Android layout实现输入法弹出后,布局整体上移

    那如果要实现沉浸式状态栏又要保持布局不会被输入法遮挡,怎么办呢? 只要在根布局加上android:fitsSystemWindows=”true”即可,效果如下(为方便看效果我把背景改成了黄色):

  • 2018-06-04 10:06:43

    mysql查询数据的同时对它进行删除操作

    今天遇见一个问题,需要把mysql数据库里面的 商品主表 和它的每一个条目对应不上的数据给全部删除(数据如下图);也就是整理一下数据库里的数据保证数据的可用;