JavaScript 字符串 replace()

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

示例

const message = "ball bat";

// replace the first b with c let result = message.replace('b', 'c');
console.log(result); // Output: call bat

replace() 语法

replace() 的语法是:

str.replace(pattern, replacement)

其中,str 是一个字符串。


replace() 参数

replace() 方法接收:

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

replace() 返回值

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

示例 1:替换第一个匹配项

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

// passing a string as the first parameter
let pattern = "Java"; let new_text = text.replace(pattern, "JavaScript");
console.log(new_text); // passing a regex as the first parameter
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:替换所有匹配项

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

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

// notice the g switch in the regex pattern
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"

// the first occurrence of javascript is replaced
let pattern = /javascript/i;  // case-insensitive search
let new_text = text.replace(pattern, "JS");
console.log(new_text)  // JS JavaScript

// all occurrences of javascript is replaced
pattern = /javascript/gi;  // case-insensitive and global search
new_text = text.replace(pattern, "JS");
console.log(new_text)  // JS JS

输出

JS JavaScript
JS JS

示例 4:将函数作为替换参数

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

const text = "Random digit: 3"

// generate a random digit between 0 and 9
function generateRandomDigit() {
  return Math.floor(Math.random() * 10)
}

// regex to match a digit
const pattern = /\d/; const new_text = text.replace(pattern, generateRandomDigit);
console.log(new_text)

输出

Random digit: 8

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


推荐阅读: JavaScript String replaceAll()

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战