You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript正则replace用对象属性替换返回undefined问题排查

代码问题分析:字符串模板替换返回undefined

原代码

let data = {"phase": 32};
let title = "Phase {phase}";
consolo.log(title.replace(/\{([^\}]+)\}/g, data["$1"]));

输出情况

  • 预期输出:Phase 32
  • 实际输出:Phase undefined

问题原因

  1. replace方法的参数逻辑错误
    String.replace()的第二个参数如果是字符串,$1才会被解析为正则捕获到的内容,但你这里直接写data["$1"],相当于直接访问data对象里名为"$1"的属性——这个属性根本不存在,所以返回undefined。正确的做法是传一个回调函数,在回调里用捕获到的键去取data对应的值。

  2. 拼写错误
    代码里的consolo.log多写了一个o,正确应该是console.log,虽然这不是输出undefined的直接原因,但会导致控制台报错,影响代码执行。

修正后的代码

let data = {"phase": 32};
let title = "Phase {phase}";
console.log(title.replace(/\{([^\}]+)\}/g, (match, key) => data[key]));

内容的提问来源于stack exchange,提问作者nguaduot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 20:32:04