replace方法与正则结合使用

261 阅读1分钟

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