before

本篇博客展示了如何是在前端对铭感字符及一些特殊的命令做过滤。

好处是,少发一次请求,减少服器校验压力。

源码示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>JavaScript过滤敏感词</title>
</head>
<body> <div>敏感字符或命令过滤,试试输入"rm -rf"或者"武藤老师"</div>
<input type="text" placeholder="请输入" class="p1"> <!-- 绑定事件 -->
<button onclick="foo()">测试</button> <!-- 报错提示框 -->
<div class="p2"></div>
</body>
<!-- 首先引入 jQuery -->
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
<!-- 引入弹出框插件 -->
<script src="https://cdn.bootcss.com/sweetalert/2.0.6/sweetalert.min.js"></script>
<script> function testRe(doc) {
// 需要维护的敏感词数组
var tokens = ["rm -rf", "武藤老师"];
var l = new Array();
$.each(tokens, function (k, v) {
l.push(new RegExp(v, "g"))
});
var result = ''; // 用于接收每次循环匹配的结果
var result1 = ''; // 收集多个匹配结果,用于后续的展示等
var new_doc = doc; // 用于返回匹配后的新的字符串
for (var i = 0; i < l.length; i++) {
while ((result = l[i].exec(doc)) != null) {
result1 += result + ' . '; // 我这里是拼接为字符串,也可以替换为数组
// 将匹配到结果替换到传过来的字符串
var reg = new RegExp(result, 'g');
new_doc = new_doc.replace(reg, '<b style="color:red;font-size:22px;">' + result + '</b>');
}
}
// 根据需要返回内容
return [new_doc, result1];
}
// 调用示例
function foo() {
// 找到输入框 获取要匹配的字符串
var value = $(".p1").val();
// 开始进行过滤
var result = testRe(value);
if (result[1].length > 0) {
// 匹配到了敏感字符或者命令
swal({
title: "警告, 存在敏感命令或字符!",
text: result[1],
showConfirmButton: false
});
// 将敏感字符替换到原来的 div 中
$(".p2").html(result[0])
} else {
// 正常的业务逻辑 可以自定制
swal({
title: "hi!",
text: "不存在敏感命令或字符",
// timer: 2000,
showConfirmButton: true
})
}
} </script>
</html>

JavaScript - 过滤敏感字符的更多相关文章

  1. 采用Global.asax的Application_BeginRequest事件过滤敏感字符

    1.特殊字符过滤公共类ProcessRequest.cs using System.Web.UI; using System.Web.UI.WebControls; using System.Web. ...

  2. java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)

    转载地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...

  3. js实现过滤重复字符和重复数组-javascript技巧

    js实现过滤重复字符 <script type="text/javascript"> <!-- String.prototype.noRepeatStr=func ...

  4. [转]Filter实现处理中文乱码,转义html标签,过滤敏感词

    原文地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...

  5. 利用微软AntiXss Library过滤输出字符,防止XSS攻击

    假如项目在前期没有过滤客户提交的字符,那么可以在输出的时候,对输出的字符进行过滤,防止出现XSS跨域攻击. 原理简单:利用ASP.NET API的管道原理,在MessageHandlers中添加一个自 ...

  6. Java过滤敏感词语/词汇---DFA算法

    最近网站需要在评论.投稿等地方过滤敏感词汇,于是在网上查找了相关教程,特此整理分享. 关于DFA算法,详细的可以去http://blog.csdn.net/u013378306/article/det ...

  7. PHP 扩展 trie-tree, swoole过滤敏感词方案

    在一些app,web中评论以及一些文章会看到一些*等,除了特定的不显示外,我们会把用户输入的一些敏感字符做处理,具体显示为*还是其他字符按照业务区实现. 下面简单介绍下业务处理. 原文地址:小时刻个人 ...

  8. java过滤敏感词汇

    前言 现在几乎所有的网站再发布带有文字信息的内容时都会要求过滤掉发动的.不健康的.影响社会安定的等敏感词汇,这里为大家提供了可以是现在这种功能的解决方案 第一种方式 创建敏感词汇文件:首先需要准备一个 ...

  9. (转)两种高效过滤敏感词算法--DFA算法和AC自动机算法

    原文:https://blog.csdn.net/u013421629/article/details/83178970 一道bat面试题:快速替换10亿条标题中的5万个敏感词,有哪些解决思路? 有十 ...

随机推荐

  1. 关于kafka定期清理日志后再消费报错kafka.common.OffsetOutOfRangeException的解决

    环境: kafka  0.10 spark  2.1.0 zookeeper  3.4.5-cdh5.14.0 公司阿里云测试机,十月一放假前,没有在继续消费,假期过后回来再使用spark strea ...

  2. Linux .bashrc

    Set environmental variable // 用:隔开 export PATH=$PATH:<PATH >:<PATH >:<PATH >:----- ...

  3. java日期大小比较

    之前有面试到两个日期的大小比较方式,现在整理一下几种方法. 例子: String beginTime=new String("2017-06-09 10:22:22");    S ...

  4. 操作系统 | 结合 CPU 理解一行 Java 代码是怎么执行的

    根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器.控制器.存储设备,以及输入输出设备,如下图所示. 我们先来分析 CPU 的工作原理,现代 CPU 芯片中大都集成了,控制单元,运算单 ...

  5. LC 973. K Closest Points to Origin

    We have a list of points on the plane.  Find the K closest points to the origin (0, 0). (Here, the d ...

  6. Android数据存储的方式

    1. 内部存储    * 路径:  /data/data/包名/    * cache用于存储临时文件,系统内存不足时,清除缓存数据    * files用于存储重要的文件,要用户手动在应用程序列表清 ...

  7. Swift开源parser

    https://www.prowidesoftware.com/products/core https://github.com/prowide/prowide-core-examples/blob/ ...

  8. R语言常用包简介

  9. Redis之快速入门与应用[教程/总结]

    内容概要 因为项目中用户注册发送验证码,需要学习redis内存数据库,故而下午花了些时间进行初步学习.本博文性质属于对今日redis学习内容的小结.在看本博文前或者看完后,可以反问自己三个问题:Red ...

  10. CentOS下安装Docker CE教程

    一.安装前准备 1.硬件要求 CentOS 7(64-bit),内核版本不能低于3.10: CentOS 6.5(64-bit或更新的版本),内核版本为 2.6.32-431 或者更高版本,一般不建议 ...