一个长度不固定的字符串, 保留首尾各3个字符, 其余部分内容用 "" 号代替, 并且 "" 号的数量和去除首尾个3个字符后的内容长度一样 ,这么一个需求.比如 let str = "123456789" 变成 123*789需求好实现, 主要想问问, 用一句正则能不能实现?如果长度固定str.replace(/(.{3}).{3}(.{3})/, "$1***$2")倒是能实现, 主要是长度不固定怎么实现
4 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
replace接受函数作为参数,如果匹配正则那么函数的第一个参数对应$1
,第二个对应$2
,以此类推...replace 使用function作为参数
let str = "123453333336789"
str.replace(/(.{3}).*(.{3})/, function(match,p1,p2){return p1+"*".repeat(str.length-6)+p2})
//"123*********789"
收到一只叮咚
TA贡献1821条经验 获得超4个赞
function filterFunc(str,char){
var transStr=str.substring(3,str.length-3);
return str.substring(0,3)+transStr.replace(/\w/g,char)+str.substring(str.length-3,str.length);
}
console.log(filterFunc(Str,'*'));
添加回答
举报
0/150
提交
取消