查表法: /** * @function groupReplace * @param {string} str * @param {Map} map * */ function groupReplace(map, str){ let result = str; map.forEach(function(key, val){ result = result.replace(key, val); }); return result; } console.log(groupReplace( '{firstname: jack, lastname: li, age: 30}', new Map([ [/\{ */, "{\""], [/: */g, "\":\""], [/, */g, "\",\""], [/\} */, "\"}"] ]) )) 分组正则匹配法: gLoginQstr = gLoginQstr.replaceAll(/(\{ *)|(: *)|(, *)|(\} *)/g, (_, $1, $2, $3, $4) => { if($1 !== undefined) return "{\""; if($2 !== undefined) return "\":\""; if($3 !== undefined) return "\",\""; if($4 !== undefined) return "\"}"; return "" }); 正则里面加的` *`是为了去除目标值前面的空格,否则`"jack"`会变成`" jack"`。 但是这样的写法显然只能处理最简单的 JSONLike 字符串,稍微复杂一点就不行了。