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