使用正则表达式进行掩码处理



我要用正则表达式屏蔽单词。

检测结果如下。

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)))

最新更新