Javascript 我怎么能禁止一个词
我想用星号替换坏单词Javascript 我怎么能禁止一个词,javascript,Javascript,我想用星号替换坏单词***。然而,当坏单词包含在另一个单词中时,就会出现问题,我不想替换它 for(var i = 0; i < forbidden.length; i++) { if(textBoxValue.search(forbidden[i]) > -1) { textBoxValue = textBoxValue.replace(forbidden[i], ''); } } for(变量i=0;i-1){ textBoxValue=text
***
。然而,当坏单词包含在另一个单词中时,就会出现问题,我不想替换它
for(var i = 0; i < forbidden.length; i++) {
if(textBoxValue.search(forbidden[i]) > -1) {
textBoxValue = textBoxValue.replace(forbidden[i], '');
}
}
for(变量i=0;i-1){
textBoxValue=textBoxValue.replace(禁止[i],'');
}
}
例如,如果坏单词是“are”,如果它是在另一个单词中,如“aren't”,我不希望它显示为“***n't”。我只想替换单词本身。一个选项是使用正则表达式,每边都有单词边界,以确保匹配的单词是独立的:
forbidden.forEach((word) => {
textBoxValue = textBoxValue.replace(new RegExp('\\b' + word + '\\b', 'g'), '');
});
例如:
let textBoxValue='bigwordfoo foo bar barbaz';
常量禁止=['foo','bar'];
禁止使用。forEach((单词)=>{
textBoxValue=textBoxValue.replace(新的RegExp('\\b'+word+'\\b','g'),'');
});
console.log(textBoxValue)
您可以创建一个动态正则表达式,将所有禁止的单词用|
分隔,以创建一个动态正则表达式。您可以使用单词边界(\b
)将其包装为仅完全匹配单词
对于下面列出的禁止字,动态正则表达式最终被禁用
/\b(?:bad|nasty|dreadful)\b/g
replace
的第二个参数获取匹配的单词作为参数。您可以使用来获得与要替换的单词长度相同的重复次数
函数替换坏字(textBoxValue,禁止){
const regex=new RegExp(`\\b(?:${probled.join('|')})\\b`,'g')
返回textBoxValue.replace(regex,m=>“*”。重复(m.length))
}
禁止常数=[“坏的”、“讨厌的”、“可怕的”]
log(replaceBadWords('字符串中有一些讨厌的单词',禁止))
log(replaceBadWords(“坏的被替换为星号,但羽毛球不会被替换”,禁止))
如果您还没有使用库(或者如果您想使用库)
你可以退房
首先,他们已经有一个坏词的清单,所以你不需要去想他们,去想你错过了什么
它们支持以下占位符:
var Filter = require('bad-words');
var customFilter = new Filter({ placeHolder: 'x'});
customFilter.clean('Don't be an ash0le'); //Don't be an xxxxxx
您可以添加或删除自己的坏话,如:
var filter = new Filter();
// add to list
filter.addWords('some', 'bad', 'word');
// remove from list
filter.removeWords('hells', 'sadist');
如果您有正确的正则表达式,还可以提供多语言支持 您可以构建一个正则表达式来匹配所有单词
'\\b(?:'+禁止.map(escape).join('.')+')\\b'