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

如何用正则表达式为字符串中的JavaScript对象键添加引号?

给键添加引号的正则解决方案

我来帮你搞定这个问题!你需要把字符串里的无引号键替换成带双引号的键,刚好可以用正则表达式的替换功能来实现。

核心思路

我们需要精准匹配每个键的特征:

  • 键由小写字母、数字或连字符组成
  • 键前面可能有空格(包括行首的空格)
  • 键后面必然跟着冒号(允许冒号前有空格)

正则表达式与替换逻辑

用这个正则表达式来匹配目标键:

/(^\s*|\s+)([a-z0-9-]+)(?=\s*:)/g

替换模板为:

$1"$2"

正则各部分拆解:

  • (^\s*|\s+):捕获键前面的空格(要么是行首的空格,要么是前一个键值对后的空格),替换时会保留这部分空格,保证格式一致
  • ([a-z0-9-]+):捕获键的核心内容,这就是我们需要加引号的部分
  • (?=\s*:):正向预查,确保匹配的内容后面跟着冒号(允许冒号前有空格),避免误匹配字符串里的其他内容

完整JavaScript示例代码

// 原始字符串
const processStr = ` abeezee: "ABeeZee", abel: "Abel", abhaya-libre: "Abhaya Libre", `;

// 执行正则替换
const regex = /(^\s*|\s+)([a-z0-9-]+)(?=\s*:)/g;
const formattedStr = processStr.replace(regex, '$1"$2"');

console.log(formattedStr);
// 输出结果:"abeezee": "ABeeZee", "abel": "Abel", "abhaya-libre": "Abhaya Libre", 

额外优化(可选)

如果要生成完全合法的JSON对象,还需要处理末尾的多余逗号,并包裹大括号:

// 去掉末尾的逗号和多余空格
const cleanedStr = formattedStr.replace(/,\s*$/, '');
// 生成合法JSON字符串
const jsonStr = `{${cleanedStr}}`;
// 解析为JSON对象
const jsonObj = JSON.parse(jsonStr);
console.log(jsonObj);

这样就能得到完全符合JSON规范的对象啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:29:50