如何解决如何替换 JavaScript 中所有出现的字符串
现代浏览器支持ECMAScript 2021 语言规范定义的String.replaceAll()
方法。
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, '');
您可以进一步简化它:
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
}
正则表达式包含特殊(元)字符,因此在find
上面的函数中盲目传递参数而不对其进行预处理以转义这些字符是危险的。这在Mozilla 开发人员网络的JavaScript 正则表达式指南中有所介绍,其中提供了以下实用程序功能(自最初编写此答案以来已更改至少两次,因此请务必检查 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 代码中有这个字符串:
"Test abc test test abc test test test abc test test abc"
正在做:
str = str.replace('abc','');
似乎只删除了abc
上面字符串中第一次出现的。
我怎样才能替换它的所有出现?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。