在JavaScript开发中,替换字符串内的指定内容是高频操作,无论是替换固定文本、特定格式的内容,还是批量修改字符串中的匹配项,都有对应的实现方案。下面将逐一介绍常见的替换方式及使用场景。

使用replace方法替换固定内容
replace是JavaScript字符串对象自带的方法,最基础的用法是直接传入要被替换的内容和替换后的内容,该方法会返回新的字符串,不会修改原字符串。
基础使用示例如下:
let originStr = "今天天气很好,适合出去散步";
// 替换单个固定内容
let newStr = originStr.replace("很好", "不错");
console.log(newStr); // 输出:今天天气不错,适合出去散步
console.log(originStr); // 输出:今天天气很好,适合出去散步,原字符串未被修改需要注意的是,这种直接传入字符串的替换方式,默认只会替换第一个匹配到的内容,如果字符串中存在多个相同的待替换内容,后面的不会被处理。
使用正则表达式实现全局替换
如果需要替换字符串中所有匹配的内容,就需要结合正则表达式使用,在正则后添加g修饰符即可开启全局匹配。
全局替换示例:
let originStr = "苹果是水果,香蕉是水果,橘子也是水果"; // 使用正则全局替换所有"水果"为"鲜果" let newStr = originStr.replace(/水果/g, "鲜果"); console.log(newStr); // 输出:苹果是鲜果,香蕉是鲜果,橘子也是鲜果
如果待替换的内容是动态变量,无法直接在正则中写死,可以使用RegExp构造函数来创建正则对象:
let originStr = "测试内容A,测试内容B,测试内容A"; let target = "测试内容A"; // 动态创建全局匹配的正则 let reg = new RegExp(target, "g"); let newStr = originStr.replace(reg, "替换后的内容"); console.log(newStr); // 输出:替换后的内容,替换后的内容,测试内容B
使用replace第二个参数为函数的高级替换
replace方法的第二个参数除了可以是字符串,还可以是一个函数,这个函数会接收匹配到的内容、匹配位置等参数,我们可以根据这些参数返回不同的替换值,实现更复杂的替换逻辑。
示例:将字符串中的所有数字加1后替换回原位置
let originStr = "数值1,数值2,数值3";
let newStr = originStr.replace(/\d+/g, function(match) {
// match是匹配到的数字字符串,转为数字后加1再转回字符串
return (Number(match) + 1).toString();
});
console.log(newStr); // 输出:数值2,数值3,数值4不同替换方式对比
下面通过表格对比几种常见替换方式的特点:
| 替换方式 | 适用场景 | 是否修改原字符串 | 是否支持全局替换 |
|---|---|---|---|
| replace(固定字符串, 替换值) | 只需要替换第一个固定匹配内容 | 否 | 否 |
| replace(正则带g修饰符, 替换值) | 需要替换所有固定匹配内容 | 否 | 是 |
| replace(正则, 函数) | 替换逻辑复杂,需要根据匹配内容动态返回替换值 | 否 | 结合正则修饰符决定 |
注意事项
- 所有字符串替换操作都不会修改原字符串,只会返回新的字符串,如果需要保存替换后的结果,要将其赋值给变量。
- 正则中的特殊字符需要转义,比如要匹配点号
.,需要写成\.,否则会匹配任意字符。 - 如果替换值中需要用到匹配到的内容,可以在替换字符串中使用
$&指代匹配到的内容,例如str.replace(/a/g, "$&-b")会在每个a后面拼接-b。
JavaScript字符串替换replace方法正则匹配修改时间:2026-06-04 03:29:35