最近有一个项目,是做聊天室的,要求可以根据管理员的录入内容来过滤一些关键词
聊天,即时性很重要,如果交给后端,遇到大量的消息进入服务器,在判断,会导致服务器负载过大。于是考虑使用JS 在发送信息之前就先过滤掉关键词。
思路:数组+正则
代码:
数据字典
keyWordsData.js
JavaScript
var keyWordArray = ['草榴','草榴社区','下载地址','泰康证券']
核心代码
filterKeyWords.js
JavaScript
function filterkeyWords(data, str) {
var s = str;
var r = 0;
var a = new Object();
for(var i in data) {
var patt = new RegExp('(' + data[i] + ')', 'g');
var ret_test = patt.test(s);
if(ret_test) {
s = s.replace(patt, '***');
r = r + 1;
}
}
a.s = s;
a.r = r;
return a;
}
实现方法
JavaScript
var rs = filterkeyWords(keyWordArray,'欢迎进入草榴社区,草榴社区是一家很大的bbs');
console.log(rs)
数据字典可以通过后端生成JS文件,一次生成终生享用
返回的s就是过滤后的内容,r是包含了多少个关键词