问题描述
我将用正则表达式来掩盖单词。
检测结果如下。
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 中,您正在替换单词 BB
中的匹配项 v
(在变量 BBBBCCC
中),它将替换 BB
的第一次出现,给出**BBCCC
它适用于 AABBCCC
的第一个示例,因为 BB
是要替换的字符串中唯一出现的地方。
你可以做的是在replace的回调中使用匹配。
let word = "BBBBCCC";
const regex = /(?<=.{2}).+(?=.{3})/;
console.log(word.replace(regex,v => '*'.repeat(v.length)))