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

Masking Processing with regex

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

检测结果如下

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的回调中使用match。

let word = "BBBBCCC";
const regex = /(?<=.{2}).+(?=.{3})/;
console.log(word.replace(regex, v => '*'.repeat(v.length)))