多语言支持与占位符自定义:bad-words高级配置教程
【免费下载链接】badwordsA javascript filter for badwords项目地址: https://gitcode.com/gh_mirrors/ba/badwords
bad-words是一款功能强大的JavaScript过滤工具,能够帮助开发者轻松检测和过滤文本中的不良词汇。本文将详细介绍如何通过高级配置实现多语言支持和自定义占位符,让内容过滤更加灵活高效。
快速了解bad-words的核心功能
bad-words通过构建过滤实例来实现文本净化,核心功能包括检测不良词汇(isProfane)、替换不良词汇(replaceWord)和净化文本(clean)。其默认配置已包含丰富的英文敏感词库,但通过简单配置即可扩展到多语言场景。
多语言支持配置指南
认识默认词库结构
bad-words的默认敏感词存储在lib/lang.json文件中,包含450+条英文敏感词。该文件采用JSON格式,通过words数组定义敏感词列表:
{ "words": [ "ahole", "anus", "ash0le", // 更多敏感词... ] }添加自定义语言词库
要支持其他语言,只需在实例化Filter时通过list参数传入自定义词库:
// 实例化包含中文敏感词的过滤器 const Filter = require('./lib/badwords.js'); const chineseBadwords = require('./lib/lang.zh.json').words; const filter = new Filter({ list: chineseBadwords // 添加中文敏感词库 });多语言混合过滤方案
通过合并多个语言词库实现多语言支持:
// 合并中英文敏感词库 const englishWords = require('./lib/lang.json').words; const chineseWords = require('./lib/lang.zh.json').words; const filter = new Filter({ list: [...englishWords, ...chineseWords] });占位符自定义技巧
修改默认替换字符
默认使用*作为替换字符,可通过placeHolder参数自定义:
// 使用#作为替换字符 const filter = new Filter({ placeHolder: '#' }); console.log(filter.clean('badword')); // 输出"#######"实现个性化替换规则
通过replaceRegex参数自定义替换模式,例如保留首字母:
// 仅替换中间字符,保留首尾字母 const filter = new Filter({ replaceRegex: /(?<=.).(?=.)/g, // 匹配中间字符 placeHolder: '*' }); console.log(filter.clean('badword')); // 输出"b*****d"高级配置参数详解
| 参数名 | 作用 | 默认值 |
|---|---|---|
list | 自定义敏感词列表 | 合并默认词库 |
emptyList | 是否清空默认词库 | false |
placeHolder | 替换字符 | '*' |
splitRegex | 单词分割正则 | /\b/ |
regex | 文本净化正则 | /[^a-zA-Z0-9|\$|\@]|\^/g |
replaceRegex | 替换规则正则 | /\w/g |
分割正则的优化配置
默认的splitRegex可能无法正确分割非英文词汇,可通过自定义正则解决:
// 支持中文分词的分割正则 const filter = new Filter({ splitRegex: /[\s\u4e00-\u9fa5]/ // 按空格和中文字符分割 });实际应用示例
场景1:社交媒体内容过滤
const filter = new Filter({ placeHolder: '❤️', list: require('./lib/lang.json').words.concat(require('./lib/lang.zh.json').words) }); const userInput = '这是一条包含badword的测试内容'; const cleanContent = filter.clean(userInput); console.log(cleanContent); // 输出"这是一条包含❤️❤️❤️❤️❤️的测试内容"场景2:多语言论坛内容审核
// 加载多语言词库 const languagePacks = { en: require('./lib/lang.en.json').words, zh: require('./lib/lang.zh.json').words, ja: require('./lib/lang.ja.json').words }; // 根据用户语言动态加载词库 function createFilter(language = 'en') { return new Filter({ list: languagePacks[language] || languagePacks.en, placeHolder: '***' }); } // 使用示例 const englishFilter = createFilter('en'); const chineseFilter = createFilter('zh');测试与验证
bad-words提供了完善的测试用例,可通过test/options.js查看配置测试示例。建议为自定义配置添加单元测试:
// 测试自定义占位符 describe('custom placeHolder', function() { it('should use custom character', function() { const filter = new Filter({ placeHolder: 'x' }); assert(filter.clean('badword') === 'xxxxxxx'); }); });总结与扩展
通过本文介绍的多语言配置和占位符自定义方法,bad-words可以满足更复杂的内容过滤需求。开发者还可以通过addWords和removeWords方法动态调整敏感词列表,实现更灵活的过滤策略。结合项目实际需求,合理配置这些参数将有效提升内容安全防护能力。
【免费下载链接】badwordsA javascript filter for badwords项目地址: https://gitcode.com/gh_mirrors/ba/badwords
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考