用javascript中的正则表达式屏蔽电话号码

用javascript中的正则表达式屏蔽电话号码,javascript,regex,Javascript,Regex,我的应用程序有一个特定的电话号码格式,看起来像999.111.222,我有一个正则表达式模式在前端屏蔽它: /[0-9]{3}\[0-9]{3}\.([0-9]{3})/ 但最近,格式发生了变化,允许中间的三位数字少一位,因此现在999.11.222和999.111.222都匹配。如何相应地更改正则表达式 “999.111.222”。替换(/[0-9]{3}\.[0-9]{3}\.([0-9]{3})/,“xxx.xxx.$1”) 预期输出: "999.111.222" // xxx.xxx

我的应用程序有一个特定的电话号码格式,看起来像
999.111.222
,我有一个正则表达式模式在前端屏蔽它:

/[0-9]{3}\[0-9]{3}\.([0-9]{3})/
但最近,格式发生了变化,允许中间的三位数字少一位,因此现在
999.11.222
999.111.222
都匹配。如何相应地更改正则表达式

“999.111.222”。替换(/[0-9]{3}\.[0-9]{3}\.([0-9]{3})/,“xxx.xxx.$1”)
预期输出:

"999.111.222" // xxx.xxx.222
"999.11.222" // xxx.xx.222

事实上,您不仅应该更改正则表达式,还应该更改回调替换函数:

const regex=/[0-9]{3}\.([0-9]{2,3})\.([0-9]{3})/;
const cbFn=(all,g1,g2)=>`xxx.xx${(g1.length==3?'x':'')}.${g2};
const a=“999.11.222”。替换(regex,cbFn);
const b=“999.111.222”。替换(regex,cbFn);

控制台日志(a,b)将{3}替换为{2,3}以匹配两位或三位数字

/[0-9]{3}\.[0-9]{2,3}\.([0-9]{3})/
有关参考信息,请参见例如使用

console.log(
“999.11.222.”替换(/[0-9]{3}\.([0-9]{2,3})\.([0-9]{3})/,函数($0,$1,$2)
{返回'xxx.+$1.replace(/\d/g,'x')+'.+$2+';})

)
这对OP没有帮助,因为第二部分(点之间)需要用
x
遮罩。