JavaScript String replaceAll

摘要: 在本教程中,您将学习有关 String replaceAll() 方法的知识,该方法用新字符串替换子字符串的所有出现。

JavaScript string replaceAll() 方法简介

String replace() 方法允许您将字符串中子字符串的第一次出现替换为新的子字符串。

要将子字符串的所有出现替换为新的子字符串,您可以重复调用 replace() 方法或使用带有全局标志 (g) 的正则表达式。

ES2021 引入了 String replaceAll() 方法,该方法返回一个新字符串,其中模式的所有匹配项都被替换为替换项。

String.prototype.replaceAll(pattern, replacement)Code language: CSS (css)

pattern 可以是字符串或 正则表达式。当 pattern 是正则表达式时,它需要包含全局标志 (g);否则,replaceAll() 将抛出异常。

假设您犯了一个错误,应该使用 replace() 方法仅替换与模式匹配的第一次出现。

replacement 参数可以是字符串或 回调函数,它将为每个匹配项调用。

replacement 是回调函数时,它具有以下形式

replacement(match, offset, str)

replacement 回调具有以下参数

  • match 是匹配的子字符串。
  • offset 是匹配子字符串在原始字符串中的偏移量。例如,如果原始字符串是 'Hello' 并且匹配的子字符串是 'll',则 offset 将为 2。
  • str 是原始字符串。

replace() 方法一样,replaceAll() 方法不会改变原始字符串。它返回一个新的完全新的字符串,其中模式被替换为替换项。

JavaScript String replaceAll() 示例

让我们看一些使用 JavaScript String replaceAll() 方法的示例。

1) 简单 JavaScriptString replaceAll() 示例

以下示例使用 String replaceAll() 方法将字符串 JS 替换为字符串 JavaScript,字符串为 'JS will, JS will, JS will rock you'

let str = 'JS will, JS will, JS will rock you.';
let newStr = str.replaceAll('JS','JavaScript');

console.log(newStr);Code language: JavaScript (javascript)

输出

JavaScript will, JavaScript will, JavaScript will rock you. 

2) 带有回调函数的 JavaScript String replaceAll() 示例

以下示例使用 String replaceAll() 方法通过正则表达式搜索子字符串。它用回调函数确定的特定替换项替换每个匹配项。

let str = 'JS will, Js will, js will rock you.';

let pattern = /js/gi;

str.replaceAll(pattern, function(match, offset, str) {
    if(match === 'JS') return 'JavaScript';
    if(match === 'Js') return 'Javascript';
    if(match === 'js') return 'javascript';
    return '';
});

console.log(newStr);Code language: JavaScript (javascript)

输出

JavaScript will, Javascript will, javascript will rock you. 

工作原理。

正则表达式 /js/gi 匹配包含子字符串 JS 的任何字符串,不区分大小写,即 JSJsjs

replaceAll() 方法用替换回调返回的值替换子字符串 JSJsjs

总结

  • 使用 JavaScript 字符串 replaceAll() 方法将字符串中子字符串的所有出现替换为新的子字符串。
本教程是否有用?