我要用正则表达式屏蔽单词。
检测结果如下。
regex: (?<=.{2}).*(?=.{3})
word : AABBCCC
Result : BB
使用以下代码可以正常工作,如下所示。
word.match(new RegExp(regex, 'gi')).forEach(v => {
word = word.replace(v, '*'.repeat(v.length));
});
结果:AA**CCC
但如果单词是BBBBCCC,则结果是**BBCCC我想BB**CCC,我如何才能得到我想要的结果?
在foreach中,您将在单词BBBBCCC
中替换匹配的BB
(位于变量v
中(,这将替换第一次出现的BB
,给出**BBCCC
它在第一个例子中适用于AABBCCC
,因为BB
是要替换的字符串中唯一出现的项。
您可以在replace的回调中使用匹配。
let word = "BBBBCCC";
const regex = /(?<=.{2}).+(?=.{3})/;
console.log(word.replace(regex, v => '*'.repeat(v.length)))