跳到主要内容

JavaScript 字符串的replace()方法

replace() 方法返回一个新字符串,其中指定的字符串/正则表达式已被替换。

示例

const message = "ball bat";

// 将第一个 b 替换为 c
let result = message.replace("b", "c");
console.log(result);

// 输出:call bat

replace() 语法

replace() 的语法是:

str.replace(pattern, replacement);

这里,str 是一个字符串。

replace() 参数

replace() 方法接受:

  • pattern - 要被替换的字符串或正则表达式
  • replacement - 用于替换 patternreplacement(可以是字符串或函数)

replace() 返回值

  • replace() 方法返回一个新字符串,其中指定的模式已被替换。

示例 1:替换第一次出现

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

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

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

输出

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

在这两种 replace() 方法中,第一次出现的 Java 被替换为 JavaScript。

示例 2:替换所有出现

要替换所有出现的 pattern 需要使用带有 g 开关的正则表达式(全局搜索)。例如,使用 /Java/g 而不是 /Java/

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

// 注意正则表达式模式中的 g 开关
const pattern = /Java/g;
const new_text = text.replace(pattern, "JavaScript");
console.log(new_text);

输出

JavaScript is awesome. JavaScript is fun.

在这里,replace() 方法将两次出现的 Java 替换为 JavaScript

不考虑大写/小写的替换

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

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

const text = "javaSCRIPT JavaScript";

// 替换第一次出现的 javascript
let pattern = /javascript/i; // 不区分大小写的搜索
let new_text = text.replace(pattern, "JS");
console.log(new_text); // JS JavaScript

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

输出

JS JavaScript
JS JS

示例 4:传递函数作为替换参数

您还可以将函数(而不是字符串)作为第二个参数传递给 replace() 方法。

const text = "Random digit: 3";

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

// 匹配数字的正则表达式
const pattern = /\d/;

const new_text = text.replace(pattern, generateRandomDigit);
console.log(new_text);

输出

Random digit: 8

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

推荐阅读: JavaScript String replaceAll()