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

如何用正则表达式提取转义引号间数据并生成JSON对象?

用正则提取转义引号间的内容(附更优方案)

嘿,我懂你想绕开循环、用正则来提取这些被转义引号包裹的内容的需求!不过先插一句——如果你的输入本身是合法的JSON格式字符串,其实有个比正则简单靠谱得多的方法,我先给你讲这个,再满足你要的正则方案~

优先推荐:直接用JSON.parse解析

你的输入本质就是一个JSON数组字符串,原生的JSON.parse完全能直接处理转义字符,一步到位得到数组:

var string = "[\"1\",\"2\",\"Example\",\"Hello world\",\"5\"]";
var obj = JSON.parse(string);

console.log(obj[0]); // 输出 1
console.log(obj[1]); // 输出 2
console.log(obj[2]); // 输出 Example
console.log(obj[3]); // 输出 Hello world
console.log(obj[4]); // 输出 5

这个方法不仅代码简洁,还能处理各种复杂的转义场景(比如内容里包含\"、\n这类转义字符),比正则更安全可靠。

正则方案:提取转义引号间的内容

如果你确实想用正则实现,这里有个能处理内容中转义字符的正则表达式,搭配exec循环来提取所有匹配的内容:

var string = "[\"1\",\"2\",\"Example\",\"Hello world\",\"5\"]";
// 匹配被双引号包裹的字符串,支持内容中的转义字符
const quoteRegex = /"([^"\\]*(?:\\.[^"\\]*)*)"/g;
const result = [];
let match;

// 循环提取所有捕获到的内容
while ((match = quoteRegex.exec(string)) !== null) {
  result.push(match[1]);
}

console.log(result[0]); // 输出 1
console.log(result[2]); // 输出 Example
console.log(result[3]); // 输出 Hello world

正则说明:

  • ":匹配字符串开头的双引号(原字符串里的\"在JS中会被解析为普通双引号,所以正则里直接写"即可)
  • ([^"\\]*(?:\\.[^"\\]*)*):核心捕获组,用来匹配引号内的内容:
    • [^"\\]*:匹配任意不是双引号也不是反斜杠的字符,零次或多次
    • (?:\\.[^"\\]*)*:非捕获组,匹配转义字符(比如\"、\t),之后再跟非引号/反斜杠的字符,确保内容里的转义不会被误判为字符串结束
  • ":匹配字符串结尾的双引号
  • g:全局匹配标志,确保能找到所有符合条件的内容

不过还是要提醒一句:如果你的输入是标准JSON,尽量用JSON.parse,正则只适合处理非标准的、简单的字符串场景哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:22:29