javascript - 如何替换 JavaScript 中所有出现的字符串?

标签 javascript string replace

给定一个字符串:

s = "Test abc test test abc test test test abc test test abc";

这似乎只删除了上面字符串中第一次出现的 abc:

s = s.replace('abc', '');

如何替换它的所有 次出现?

最佳答案

截至 2020 年 8 月: Modern browsers have support对于 String.replaceAll() method由 ECMAScript 2021 语言规范定义。


对于旧版/遗留浏览器:

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}

function replaceAll(str, find, replace) {
  return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}

这是这个答案的演变过程:

str = str.replace(/abc/g, '');

回应评论“如果‘abc’作为变量传递会怎么样?”:

var find = 'abc';
var re = new RegExp(find, 'g');

str = str.replace(re, '');

回应Click Upvote的评论,你可以进一步简化它:

function replaceAll(str, find, replace) {
  return str.replace(new RegExp(find, 'g'), replace);
}

注意: 正则表达式包含特殊(元)字符,因此在上面的 find 函数中盲目传递参数而不对其进行预处理是危险的逃避那些 Angular 色。这包含在 Mozilla Developer Network 中。的 JavaScript Guide on Regular Expressions ,他们提供了以下实用功能(自最初编写此答案以来至少更改了两次,因此请务必检查 MDN 站点以获取潜在更新):

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}

所以为了让上面的replaceAll()函数更安全,如果你还包含escapeRegExp,可以修改成如下:

function replaceAll(str, find, replace) {
  return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}

关于javascript - 如何替换 JavaScript 中所有出现的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/832257/

相关文章:

java - 我想在每个浏览器关闭浏览器后注销我的应用程序?

javascript - 客户端表单验证和交互的最佳 JavaScript 解决方案?

C++:strcpy函数复制null?

python - 如何找到两个字符串的并集并保持顺序

r:有条件地替换列子集中的值

python - 使用 Pandas 从数据框的所有项目中删除字符串

javascript - 使用 v-if 时 Vue.js CSS 动画无法正常工作

javascript - 针对实际数据库测试 NestJS 服务

php - 将字符串从 PHP 传递到 JavaScript 函数

python - 从整个数据框中删除一个字符