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

如何用正则将JS中的空值合并运算符(??)替换为三元运算符?

用正则表达式替换JS中的空值合并运算符(??)

可以用正则表达式实现这种替换,但得留意JS表达式的复杂情况,比如嵌套结构、空格差异这些问题。

基础替换方案(适用于简单场景)

用下面的正则匹配和替换规则:

  • 匹配正则:/(\S.*?)\s*\?\?\s*(.*?)(?=\s*[;,\)\}])/g
  • 替换模板:$1 == undefined ? $2 : $1

比如你提到的object.error ?? 0,会被替换成object.error == undefined ? 0 : object.error(你示例里的x应该是笔误,实际要替换成左侧的表达式)。

注意事项

  • 要是遇到嵌套的??表达式(比如(a ?? b) ?? c),这个基础正则就处理不了了——正则对嵌套结构的解析能力有限。这种情况更推荐用Babel这类专门的转译工具,能更可靠地处理所有语法兼容问题。
  • 替换前一定要备份原文件,替换后记得测试代码运行情况,避免正则误替换其他无关内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:09:24