好吧,我认为这很简单,但我在将一些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"), "");
}
我没有比赛,也没有替补。这个相同的代码结构和正则表达式格式在PHP应用程序中工作。
感谢任何帮助,谢谢。
答案 0 :(得分:1)
如果您的输入为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.