Javascript + regex坏字过滤器,忽略单词中的空格和其他字符
Javascript + regex badword filter that ignores whitespace and other characters within the word
嗯,我认为这将是简单的,但我有问题转换一些PHP正则表达式代码到javascript。
这是我的JS代码:
for(var i=0; i < badwords.length; i++) {
var badword = badwords[i].slice(0, -2);
var regex = "/(";
for(var j=0; j < badword.length; j++) {
regex += "[" + badword[j].toLowerCase() + "|" + badword[j].toUpperCase() + "][/W]*";
}
regex += ")/";
msg = msg.replace(new RegExp(regex, "g"), "");
}
我没有得到匹配,没有替换发生。同样的代码结构和regex格式也适用于PHP应用程序。
如果输入的是foo
,则正则表达式应该是/f[^a-z]*o[^a-z]*o/ig
。您可以使用字符串和正则表达式构建此正则表达式,如下所示:
var message = 'this string should not contain "foo", "b a r", "b.l.a.h" and "b_a_z". Baaz is acceptable.';
var badwords = ["foo", "bar", "blah", "baz"];
for (var i = 0; i < badwords.length; i++) {
var pat = badwords[i].slice(0, -1).replace(/([a-z])/g, "$1[^a-z]*") + badwords[i].slice(-1);
var rxp = new RegExp(pat, "ig");
message = message.replace(rxp, "****");
}
message;
// output:
// this string should not contain "****", "****", "****" and "****". Baaz is acceptable.
相关文章:
- 如何让程序检查所选单词中是否有按键
- Regex或javascript每X个连续单词中有一个单词
- 单词中的元素每个都添加类
- Hangman游戏将用户选择的字母与单词中的字母进行比较以进行猜测
- 单词中重复出现字母频率最高的字符串
- Javascript如何在一个6个字母长的单词中混合字母,并将每个字母放在一个特定的按钮上
- 计算一个字母在一个单词中出现的次数
- 匹配单词中两个相等的字符,并替换为一个RE
- Javascript正则表达式匹配多个单词中至少一个以数字开头的单词,但至少匹配两个单词
- 从所有单词中替换,即使用破折号分隔,第一个字符用大写[更简单的方法]
- 正则表达式匹配单词直到空格或字符
- 字符串中单词中的重复字符
- JavaScript字符,单词和空格计数函数
- 生成单词中所有可能的二进制组合('true''false')性能
- JavaScript正则表达式替换非单词和空格不起作用
- 如何搜索只出现在完整单词中的表达式
- 在javascript中搜索单词中的字母
- 替换多个JavaScript单词中的每个字母
- Regex捕获空格和特殊字符,除了单词中的连字符
- Javascript + regex坏字过滤器,忽略单词中的空格和其他字符