MDN 上 replace 方法的介绍:replace() 方法返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。如果 pattern 是字符串,则仅替换第一个匹配项。
var str = 'abb';
var res = str.replace('b', 'c'); // replace不具备全局匹配能力
console.log(res); // acb
当 reaplce 方法与正则一起使用时:
var str = 'abb';
var reg = /b/g; // 此处加g全局匹配
var res = str.replace(reg, 'c');
console.log(res); // acc
当 replace 方法第二个参数为函数时:第一个参数$表示匹配的整体,即aabb ccdd,第二个参数表示第一个子表达式,即a c,第三个参数表示第二个子表达式,即b d,当有第四个参数,第五个参数时依次类推...
var str = 'aabbccdd';
var reg = /(\w)\1(\w)\2/g;
var res = str.replace(reg, function ($, $1, $2) {
// console.log($, $1, $2);
// aabb, a, b ccdd, c, d
return $2 + $2 + $1 + $1;
});
console.log(res); // bbaaddcc