跳到主要内容

JavaScript 字符串 replaceAll() 方法

replaceAll() 方法返回一个新字符串,其中所有匹配的模式都被替换。

示例

const message = "ball bat";

// 将所有出现的 b 替换为 c
let result = message.replaceAll("b", "c");
console.log(result);

// 输出:call cat

replaceAll() 语法

replaceAll() 的语法为:

str.replaceAll(pattern, replacement);

这里,str 是一个字符串。

replaceAll() 参数

replaceAll() 方法接受以下参数:

  • pattern - 要替换的子字符串或正则表达式
  • replacement - 用此替换内容替换 pattern(可以是字符串或函数)

replaceAll() 返回值

  • replaceAll() 方法返回一个新字符串,其中所有匹配的模式都被替换。

注意: 没有全局("g")标志的 RegExp 会抛出 TypeError

示例 1:使用 replaceAll()

const text = "Java is awesome. Java is fun.";

// 将第一个参数作为字符串传递
let pattern = "Java";
let new_text = text.replaceAll(pattern, "JavaScript");
console.log(new_text);

// 将第一个参数作为正则表达式传递
pattern = /Java/g;
new_text = text.replaceAll(pattern, "JavaScript");
console.log(new_text);

输出

JavaScript is awesome. JavaScript is fun
JavaScript is awesome. JavaScript is fun.

不考虑大小写的替换

replaceAll() 方法区分大小写。要执行不区分大小写的替换,需要使用带有 i 开关的正则表达式(不区分大小写的搜索)。

示例 2:不区分大小写的替换

const text = "javaSCRIPT JavaScript";

// 所有出现的 javascript 被替换
let pattern = /javascript/gi; // 不区分大小写且全局搜索
let new_text = text.replaceAll(pattern, "JS");
console.log(new_text); // JS JS

输出

JS JS

示例 3:使用函数作为替换

你也可以传递一个函数(而不是字符串)作为 replaceAll() 方法的第二个参数。

const text = "3.1415";

// 生成一个 0 到 9 之间的随机数字
function generateRandomDigit() {
return Math.floor(Math.random() * 10);
}

// 用于匹配数字的正则表达式
const pattern = /\d/g;
const new_text = text.replaceAll(pattern, generateRandomDigit);
console.log(new_text);

输出

4.3518;

当你运行此程序时可能会得到不同的输出。这是因为 text 中的第一个数字被替换为了 09 之间的随机数字。

推荐阅读: JavaScript String replace()