我正在制作一个正则表达式亵渎过滤程序。例如,当有人在文本框中键入“去他妈的自己”然后按“点击我”按钮时,返回的文本是“去****自己”。
一切都很好。但是,很奇怪的是,如果我输入相同的脏话两次,它只会在第一次被审查。例如,“ Fuck fuck fuck fuck”变成“ **** fuck fuck fuck”。
怎么了?
以下是应该检查F字的代码:
d
而且,万一您需要它,这是整个程序的代码:
{key: sum((item in d) for item in d[key]) for key in d}
#{'Family': 1, 'House': 0}
答案 0 :(得分:5)
我认为您正在寻找g
标志:
var desire = text.replace(/[fF]+[uU]+[cC]+[kK]+/g, "****")
^
没有g
(对于Global)标志,正则表达式仅匹配第一个匹配项,因此仅替换一个匹配项。借助它,正则表达式可以匹配所有 项,这将使您能够有效地替换所有这些项。
请注意,您不需要像[fF]
这样的字符类。还有一个标志i
(不区分大小写)使匹配不区分大小写。因此,这是一种更清洁的方法:
var desire = text.replace(/f+u+c+k+/gi, "****")
^^