replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
在阅读underscore源码时,看到了replace使用回调函数的形式
特在此总结一下replace的使用方法
普通文本替换
普通替换
1
'test'.replace(/te/,'et'); => etst
忽略大小写
1
'Test'.replace(/te/i,'et'); => etst
全局
1
'TestTEST'.replace(/te/ig,'et'); => etstetST
使用匹配到的字符串作为参数
1
'TestTEST'.replace(/(te).*(TE)/i,'$2aa $1bb'); => TEaa TebbST
使用回调函数
ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身
普通替换
1
2
3
4
5'TestTEST'.replace(/te/ig, function(str){
return str + '123';
});
//输出:Te123stTE123ST
//参数str为匹配到的字符串带参数替换
'testTEST'.replace(/(te)|(TES)/g, function(str, te, TES){ if(te) return te + 456 if(TES) return TES + 789; }); //输出:te456stTES789T //参数te对应表达试中(te) //参数TES对应表达试中(TES) //参数的顺序与表达式中()的顺序一致 //'()'中为一个匹配,每个()内都是单独匹配,可设置多个