如何用正则表达式为字符串中的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
相关产品推荐
相关产品推荐

