A Node.js profanity filter with support for exact matching, obfuscated word detection, and customizable replacement.
You can install the node-profanity-filter
package using npm:
npm install node-profanity-filter
import { Filter } from 'node-profanity-filter';
const filter = new Filter({
wordBoundaries: true,
parseObfuscated : true,
replaceWith: '',
disableDefaultList: false, // true to start with empty word list
excludeWords: [
'excluded-badword'
],
includeWords: [
'math'
]
});
// true
console.log(filter.isProfane('badword'));
// false
console.log(filter.isProfane('goodword'));
// true (due to parseObfuscated)
console.log(filter.isProfane('b@dw0rd'));
// false (due to excludeWords)
console.log(filter.isProfane('excluded-badword'));
// true (due to includeWords)
console.log(filter.isProfane('math'));
// result: I like your .
console.log(filter.sanitize('I like your badword.'));
// result: I like your cat.
console.log(filter.sanitize('I like your badword.', 'cat'));
Option | Type | Default | Description |
---|---|---|---|
wordBoundaries |
boolean | false | Match only whole words instead of substrings |
parseObfuscated |
boolean | true | Normalize common character obfuscations before matching |
replaceWith |
string | '' | String to replace detected profane words with |
disableDefaultList |
boolean | false | Disable the default profanity word list |
excludeWords |
string[] | [] | List of words to exclude from filtering |
includeWords |
string[] | [] | List of additional words to include in filtering |
Created by Crytek1012.
This project is licensed under the MIT License.