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

JavaScript正则:移除双引号外空白及忽略转义引号问题

移除JSON字符串引号外空白并正确识别转义引号的解决方案

要解决这个问题,核心是精准区分引号内(含转义引号)和引号外的内容,只清除引号外的所有空白字符。之前尝试的正则没考虑转义引号的情况,导致引号对匹配错误,下面是可行的实现方案:

核心代码实现

// 示例输入
const rawJson = '{      "key":   "he said \\"how would I do this\\" sadly?  "    }';
// 处理逻辑
const cleanedJson = rawJson.replace(/("(?:\\.|[^"\\])*")|\s+/g, (match, quotedContent) => {
  // 如果匹配到引号内的内容,直接保留;否则替换空白为空
  return quotedContent || '';
});

console.log(cleanedJson);
// 输出:{"key":"he said \"how would I do this\" sadly?  "}

正则表达式解析

/("(?:\\.|[^"\\])*")|\s+/g 分为两部分:

  • ("(?:\\.|[^"\\])*"):匹配完整的双引号包裹内容,包括内部的转义引号:
    • (?:\\.|[^"\\])* 是非捕获组,用来匹配两种情况:
      • \\.:匹配任意转义字符(比如\"、\\等)
      • [^"\\]:匹配既不是双引号也不是反斜杠的普通字符
        这部分能确保不会把转义的\"误判为引号对的结束。
  • |\s+:匹配引号外的一个或多个空白字符(空格、制表符、换行等)

回调函数中,当匹配到引号内的内容时直接返回,否则将空白替换为空字符串,完美实现需求。

测试普通场景

输入:{ "key": "My value " }
处理后输出:{"key":"My value "}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:52:41