@yhiot/utils
Version:
104 lines (79 loc) • 3.66 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.forbidReplace = exports.check = exports.buildForbidMap = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _console = _interopRequireDefault(require("console"));
// 参考:https://www.jianshu.com/p/1ce154b4bdbe
var forbidMap = {};
var buildForbidMap = function buildForbidMap(wordList) {
var result = {};
wordList = wordList || sensitiveWords;
for (var i = 0, len = wordList.length; i < len; ++i) {
var map = result;
var word = wordList[i];
for (var j = 0; j < word.length; ++j) {
var ch = word.charAt(j);
if (map[ch]) {
map = map[ch];
if (map['empty']) {
break;
}
} else {
if (map['empty']) {
delete map['empty'];
}
map[ch] = {
empty: true
};
map = map[ch];
}
}
}
forbidMap = result;
return result;
};
exports.buildForbidMap = buildForbidMap;
var check = function check(map, content) {
var result = [];
var stack = [];
var point = map;
for (var i = 0, len = content.length; i < len; ++i) {
var ch = content.charAt(i);
var item = point[ch];
if (!item) {
i = i - stack.length;
stack = [];
point = map;
} else if (item['empty']) {
stack.push(ch);
result.push(stack.join(''));
stack = [];
point = map;
} else {
stack.push(ch);
point = item;
}
}
return result;
};
exports.check = check;
var forbidReplace = function forbidReplace(text) {
var wordMap = forbidMap;
var result = text;
var words = check(wordMap, text);
for (var i = 0; i < words.length; i++) {
var word = words[i];
var xxx = (0, _toConsumableArray2.default)(Array(word.length)).map(function () {
return '*';
}).join('');
_console.default.log('forbidReplace', word, word.length, xxx, text); // 创建一个正则表达式
var r = new RegExp(word, 'ig');
result = result.replace(r, xxx);
}
return result;
};
exports.forbidReplace = forbidReplace;
var sensitiveWords = ['法轮功', '杜冷丁', '海洛因', 'heroi', 'cocai', 'k粉', '冰毒', '爱他死', '安非他命', '吗啡', '摇头丸', '毛泽东', '江泽民', '胡锦涛', '习近平', '周恩来', '温家宝', '邓小平', '藏独', '退党', '法轮大法', '刘少奇', '董必武', '宋庆龄', '李先念', '杨尚昆', '华国锋', '李鹏', '朱镕基', '朱德', '叶剑英', '吴邦国', '罢免党', '罢免党员', '爱液', '按摩棒', '被操', '被插', '被干', '操死', '操我', '插进', '插你', '插我', 'a片', '18禁', '强奸', '奸杀', '奸污', '奶子', '内射', '群交', '日逼', '肉棒', '肉洞', '肉棍', '肉具', '肉穴', '肉欲', '乳交', '乳头', '骚女', '色逼', '色b', '兽交', '爽片', '吃精', '春药', '荡妇', '口交', '乱交', '乱伦', '轮暴', '轮奸', '淫水', '舔脚', '小穴', '迷奸', '蜜穴', '肛交', '鸡巴', '鸡奸', '妓女', '奸情', '脚交', '精液', '菊花洞', '巨乳', '菊穴', '台独', '台湾独立', '达赖', '迷药', '南京大屠杀', '咖啡因', '李克强', '张德江', '刘云山', '王岐山', '李长春', '胡耀邦', '李洪志', '明慧网', '网银', '银行', '农行', '招行', '建行', '工行', '中行', '交行', '广发', '浦发', '账号', '卡号', '充值', '转账', '转钱', '充话费', '支付宝', '微信支付', '汇款', '打款', 'QQ钱包', '百度钱包'];