一个长度不固定的字符串, 保留首尾各3个字符, 其余部分内容用 "" 号代替, 并且 "" 号的数量和去除首尾个3个字符后的内容长度一样 ,这么一个需求.
比如 let str = "123456789" 变成 123*789
需求好实现, 主要想问问, 用一句正则能不能实现?
如果长度固定
str.replace(/(.{3}).{3}(.{3})/, "$1***$2")
倒是能实现, 主要是长度不固定怎么实现
一个长度不固定的字符串, 保留首尾各3个字符, 其余部分内容用 "" 号代替, 并且 "" 号的数量和去除首尾个3个字符后的内容长度一样 ,这么一个需求.
比如 let str = "123456789" 变成 123*789
需求好实现, 主要想问问, 用一句正则能不能实现?
如果长度固定
str.replace(/(.{3}).{3}(.{3})/, "$1***$2")
倒是能实现, 主要是长度不固定怎么实现
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"
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,'*'));
既然都知道$1是第一个匹配了,就没有必要用函数了
let str = "123453333336789"
str.replace(/(^.{3})(.*)(.{3}$)/, "$1*$3")
//"123*789"
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答857 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决