正则表达式隐藏号码中间6位:替换结果不符求解决方案
正则替换号码中间6位为星号的正确实现
问题分析
输入号码:54998524154,预期输出54******154,现有代码返回54*154的核心原因是:替换操作将匹配到的6位数字直接替换成了单个*,而非对应长度的6个星号。
解决方案
方案1:直接指定6个星号作为替换值
const phone = "54998524154" const result = phone.replace(/(?<=^\d{2})\d{6}/g, '******') console.log(result) // 输出:54******154
方案2:动态生成对应长度的星号(适配可变位数场景)
如果后续需要替换的位数可能调整,可通过替换函数自动生成与匹配长度一致的星号:
const phone = "54998524154" const result = phone.replace(/(?<=^\d{2})\d{6}/g, match => '*'.repeat(match.length)) console.log(result) // 输出:54******154
正则说明
/(?<=^\d{2})\d{6}/g 是一个正向先行断言正则,作用是精准匹配开头2位数字之后的连续6位数字,确保只替换中间目标段,不会改动前后的数字部分。
内容的提问来源于stack exchange,提问作者Lucy
相关产品推荐
相关产品推荐

