这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战。
很多网站有敏感词过滤的效率,这篇文章就用Javascript大致模拟下这个效果的实现思路。
一、HTML布局
实现设计好相关需要的区域,html布局如下:
1、标题区域
2、评论编辑区域
3、发布按钮
4、经敏感词过滤后的评论显示区域
布局核心html代码如下:
<div class="sensitive">
<h2>敏感词过滤</h2>
<textarea name="" id="comment" cols="30" rows="10"></textarea>
<div class="submit">
<input type="submit" value="发布" id="sub">
</div>
<textarea name="" id="res" cols="30" rows="10"></textarea>
</div>
二、CSS样式
因为主要是为了练习一下javascript的代码,html布局的样式信息怎么方便怎么来,样式炒鸡简单,就是让标签居中显示,样式如下:
加完样式信息后的布局如下图:
三、Javascript特效
1、获取所需标签对象:评论编辑区域标签对象、评论发布按钮标签对象、经敏感词过滤的评论显示区域标签对象;
let comment = document.getElementById("comment");
let sub = document.getElementById("sub");
let res = document.getElementById("res");
2、一般已经正式发布的网站是会有一个敏感词词库,这里过敏感就用两个“秃头”和“熬夜”作为简单的例子(ps:你熬夜秃头了吗,哈哈哈),过滤确定好了后,就可定义一个正则表达式,用于匹配评论中的敏感词,正则表达式(记得要使用全局模式,把评论里的敏感词全部匹配到)如下:
let reg = /秃头|熬夜/g
3、为发布评论按钮设置鼠标点击响应事件,当点击发布时,首先使用上一步的正则表达式匹配到敏感词,然后将匹配到的敏感词替换为“ ** ”,最后将过滤后的评论显示到评论展示区域。
sub.addEventListener("click", () => {
let resTest = comment.value.replace(reg, "**");
res.innerText = resTest;
})
至此,简单的敏感词过滤功能就完成啦,撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。