JavaScript String replace() (字串取代)

replace 方法用來將字串中的字取代為另一個字。

語法:

str.replace(regexp|substr, newSubStr|function)

取代後會返回一個新的字串。

用法:

var str = 'This is Apple.';
// 輸出 'This is Banana.'
console.log(str.replace('Apple', 'Banana'));

第一個參數也可以使用正規表示式 (Regex)

var re = /apples/gi;
var str = 'Apples are round, and apples are juicy.';
var newstr = str.replace(re, 'oranges');
// 輸出 'oranges are round, and oranges are juicy.'
console.log(newstr);

取代的字串中,我們可以用 $1 $2 $3... 來表示匹配的群組 (capturing group):

var re = /(\w+)\s(\w+)/;
var str = 'John Smith';
var newstr = str.replace(re, '$2, $1');
// 輸出 'Smith, John'
console.log(newstr);

第二個參數可以是一個函數,傳入的參數如下:

replacer(match, p1, p2, p3,..., offset, string)
  • match 表示匹配的字串
  • p1, p2, p3... 表示匹配的群組
  • offset 為匹配的字串在原字串中的位置,從 0 算起
  • string 為要被匹配的完整字串
function replacer(match, p1, p2, p3, offset, string) {
  return [p1, p2, p3].join(' - ');
}
// 輸出 'abc - 12345 - #$*%'
console.log('abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer));