JavaScript/TypeScript filter and checker for bad words aka profanity.
API documentation in GitHub Wiki.
yarn add bad-words-next
or
npm install bad-words-next
const BadWordsNext = require('bad-words-next')
const en = require('bad-words-next/data/en.json')
const badwords = new BadWordsNext({ data: en })
// Returns true when passed string contains a bad word
console.log(badwords.check('S0me sh!tt is here'))
// will print `true`
// Returns filtered string with masked bad words
console.log(badwords.filter('S0me sh!tt is here'))
// will print `S0me *** is here`
badwords.filter('S0me sh!tt is here', (badword) => {
console.log(badword);
})
// will print `sh!tt`
const BadWordsNext = require('bad-words-next')
const en = require('bad-words-next/data/en.json')
const es = require('bad-words-next/data/es.json')
const fr = require('bad-words-next/data/fr.json')
const de = require('bad-words-next/data/de.json')
const ru = require('bad-words-next/data/ru.json')
const rl = require('bad-words-next/data/ru_lat.json')
const ua = require('bad-words-next/data/ua.json')
const pl = require('bad-words-next/data/pl.json')
const ch = require('bad-words-next/data/ch.json')
const badwords = new BadWordsNext()
badwords.add(en)
badwords.add(es)
badwords.add(fr)
badwords.add(de)
badwords.add(ru)
badwords.add(rl)
badwords.add(ua)
badwords.add(pl)
badwords.add(ch)
interface Data {
id: string // Unique dictionary ID
words: string[] // Words list
lookalike: Lookalike // Lookalike homoglyphs map
}
interface Lookalike {
[key: string | number]: string // Simple key-value object
}
You can use the following pattern characters in a word string:
*
indicates any characters, use it only on start and/or end of a word+
indicates one or more repeating characters_
indicates special characters
interface Options {
data?: Data // Dictionary data
placeholder?: string // Filter placeholder - default '***'
specialChars?: RegExp // Special chars to allow on start and/or end of a word - default /\d|[!@#$%^&*()[\];:'",.?\-_=+~`|]|a|(?:the)|(?:el)|(?:la)/
spaceChars?: string[] // Pseudo space chars, a list of values for `_` symbol in a dictionary word string - default ['', '.', '-', ';', '|']
confusables?: string[] // List of ids to apply transformations from `confusables` npm package - default ['en', 'es', 'de', 'ru_lat']
maxCacheSize?: number // Max items to store in cache - default 100
}
See Options API for more details.
-
Dictionary words with spaces won't work b/c they do not represent a single word
-
Dictionaries have to be improved over time