大概思路
要把方法放到String的prototype上,方法接收两个参数,一个是正则,一个是回调函数,每当正则匹配上就要调用这个回调函数,函数的返回值,会把匹配的部位替换,利用正则的exec方法每当执行一次正则的lastIndex就会后移,移到当前匹配的后一位,当匹配不上就会返回null
代码实现
function myreplace(reg,callback){
let regArr= reg.exec(this) //返回的结果当前匹配的信息
let length=regArr[0].length
let emptyArr=[]
for(let i=0;i<length-1;i++){
emptyArr.push("")
}
let newArr=this.split("")
while(regArr){
let index=regArr["index"]
let content=callback(...regArr)
newArr.splice(index,length,content,...emptyArr)
regArr= reg.exec(this)
}
return newArr.join("")
}
String.prototype.myreplace = replace;