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>


  • 2021-04-15 10:32:18

    怎么给 headless chrome添加cookies

    In puppeter you have access to the session cookies through page.cookies(). So once you log in, you could get every cookie and save it in a json file:

  • 2021-04-15 10:51:21

    如何通过Devtools协议拦截和修改Chrome响应数据

    在日常研究中,我们经常碰到大量JavaScript代码,我们首先要深入分析才能了解这些代码的功能及具体逻辑。这些代码代码可能会被恶意注入到页面中,可能是客户送过来需要我们帮忙分析的脚本,也可能是我们的安全团队在网页上找到的引用了我们服务的某些资源。这些脚本通常代码量不大、经过混淆处理,并且我们总是需要经过多层修改才能继续深入分析。

  • 2021-04-19 10:54:39

    block和delegate的区别

    代理 可读性高 大部分可以属性 block 写的代码少 一般作为参数 通知 占用资源

  • 2021-04-19 11:00:23

    浅谈block和delegate的使用

    委托是协议的一种,顾名思义,就是委托他人帮自己去做事。委托是给一个对象提供机会对另一个对象中的变化做出反应或者影响另一个对象的行为。其基本思想是:两个对象协同解决问题,并且打算在广泛的情形中重用。委托指向另一个对象(即它的委托)的引用,并在关键时刻给委托发消息。消息可能只是通知委托发生了某件事情,给委托提供机会执行额外的处理,或者消息可能要求委托提供一些关键的信息以控制所发生的事情。委托的作用主要有两个,一个是传值,一个是传事件。

  • 2021-04-19 11:36:44

    iOS 组件实现方案

    什么才是好架构,为什么要组件,组件设计的优点

  • 2021-04-25 09:53:18

    android debug速度特别慢有时候卡住

    一直提示定在 Starting LLDB server。可能的原因是 Android Studio编译速度太慢了,就会一直卡在Starting LLDB server。可以通过设置 Run/Debug Configurations ——> Debugger ——> Debug type 为 Java 跳过 C/C++的调试,起码实现对 Java 程序的调试

  • 2021-04-25 09:54:19

    sequelize 时区配置

    sequelize 默认情况下, 保存日期时会转换成 +00:00时区,