3chospirits / badwords-filter

An easy-to-use word filter with advanced detection techniques. A lightweight package with zero dependencies.
10 stars 2 forks source link

npm npm install size

NPM

badwords-filter

Installation

npm i -s badwords-filter

An easy-to-use word filter with advanced detection techniques. A lightweight package with zero dependencies.

Features

Usage

const Filter = require("badwords-filter");
const config = {
    list: ["test", "hello"],
    cleanWith: "$",
    useRegex: false,
};
const filter = new Filter(config);

Configuration options for filter

Property Type Default Description
list Array en.json filterset Array of filters in string format
cleanWith String "*" Character or array of strings to replace bad words with in clean function
useRegex boolean false Option to convert strings in list to regex expressions

Functions

Function Parameters Returns Description
normalize String message to normalize String normalized message converts to lowercase, normalizes accented characters, converts l33t text to normal text, removes excess non-alphabetical characters (automatically used in all package functions)
isUnclean String message to check for cleanliness Boolean true if contains any filtered word parses message for any filtered words
clean String message to clean String cleaned message replaces all filtered words with cleanWith character or a random string
getUncleanWordIndexes String message to parse Array <number> indexes of words that contain filtered words gets indexes of all filtered words
isWordUnclean String word to check Boolean true if word is detected as a filtered word checks if a word is filtered
debug String message to test undefined prints to console the outputs of all functions on the given string

Example Detection

const Filter = require("badwords-filter");
const config = { list: ["hello"] };
const filter = new Filter(config);

//All the following would return true
filter.isUnclean("hello");
filter.isUnclean("HeLlO");
filter.isUnclean("h3ll0");
filter.isUnclean("heeeellloooo");
filter.isUnclean("heeeeellllooooooo there!!!");
filter.isUnclean("héllo");
filter.isUnclean("h.#ell-o");

Examples

Using a custom filter list

Normal strings filter

const Filter = require("badwords-filter");
const filter = new Filter({ list: ["badword"] });
filter.isUnclean("This sentence contains 'badword'"); // true
filter.isUnclean("This sentence does not contain any nasty words"); // false
filter.clean("This sentence contains 'badword'"); // "This sentence contains *********"
filter.getUncleanWordIndexes("This sentence contains 'badword'"); //[3]
filter.getUncleanWordIndexes("baaadword, goodword, okayword, badword"); // [0,3]
filter.isUnclean("baaaaaadw0rd"); //true

Regex strings filter

const Filter = require("badwords-filter");
const filter = new Filter({
    list: ["b.+d"], // any word that stars with b and ends with d
    useRegex: true,
});
filter.isUnclean("marching band"); // true
filter.clean("marching band"); // "marching ****"

Future Features