阅读:383 输入:2017-09-10

过滤敏感、不良词汇。原理:一种是正则表达式,一种是对象方法replace()。

正则实例一:

var filter = /一枪爆头/g;  // 将受限制的词语组成正则表达式
var said = "他被人一枪爆头了"; // 将接受检查的语句
if( filter.test(said)) {// 如果被检查语句中存在受限词汇
alert( "该语句中有限制级词语,系统已经过滤!" ); // 显示警告
}else{// 否则
alert( said ); // 输出原话
}

正则实例二:

法1:RegExp()

function filter() {
 // 获取输入框的内容inputContent
var inputContent = input.value;
 // 多个敏感词,这里直接以数组的形式展示出来
var arrMg = ["fuck", "tmd", "他妈的"];
 // 显示的内容--showContent
var showContent = inputContent;
// 正则表达式
// \d 匹配数字 
for (var i = 0; i < arrMg.length; i++) {
// 创建一个正则表达式
var r = new RegExp(arrMg[i], "ig");
showContent = showContent.replace(r, "*");
}
// 显示的内容--showInput
showInput.value = showContent;
}

法2:replace()

function filtion(){
var inputContent = input.value;
// 多个敏感词
var arrMg = ["fuck", "tmd", "他妈的"];
var showContent = inputContent;
for (var i = 0; i < arrMg.length; i++) {
// replace 只会替换第一个,后面如果还有相同的内容,就不会替换了
showContent = showContent.replace(arrMg[i], "*");
}
showInput.value = showContent;
}

调用法1、法2的方法(多个敏感词)如下:

<textarea id="inputContent" ></textarea>
<input type="button" value="转换" onclick="filter()"/>
<textarea id="showInput"></textarea>

法3:replace()

var words=['敏感词1','敏感词2'];
var p='我是敏感词1,我也是敏感词2,测试看看';
for(var i=0;i<words.length;i++){
p=p.replace(new RegExp(words[i],'ig'),new Array(words[i].length).join('*'));
};
alert(p);

当然,敏感词的过滤还是还有好几种方法的,比如jq的也可以,当然使用一些目前主流的前段框架也是可以的,例如angular、vue等这些都会有自己的过滤器。但是,在现实开发中,过滤这一块的话,通常交给后台方法。