帮忙写一个正则?

一个长度不固定的字符串, 保留首尾各3个字符, 其余部分内容用 "" 号代替, 并且 "" 号的数量和去除首尾个3个字符后的内容长度一样 ,这么一个需求.

比如 let str = "123456789" 变成 123*789

需求好实现, 主要想问问, 用一句正则能不能实现?

如果长度固定

str.replace(/(.{3}).{3}(.{3})/, "$1***$2")

倒是能实现, 主要是长度不固定怎么实现


尚方宝剑之说
浏览 516回答 4
4回答

江户川乱折腾

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,'*'));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript