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

求匹配忽略开头空格后以数字开头的JSON键的正则表达式

匹配忽略开头空格后以数字开头的JSON键的正则方案

需求明确

要定位忽略开头空格后以数字开头的JSON属性名(键),目标是找到符合条件的键的第一个数字,进而选中整个键字符串。

测试用例

  • 符合条件的键:
    • "4WD REGIONAL VALUE PACKAGE " : "42.2 ",
    • " 4WD REGIONAL VALUE3 PACKAGE7 " : " 42.2 ",
    • "447778WD_REGIONAL_VALUE_PACKAGE2332 " : "42.2 ",
  • 不符合条件的键:
    • " WD_REGIONAL_VALUE_PACKAGE2332 " : "42.2 ",(空格后为字母)
    • "WD_REGIONAL_VALUE_PACKAGE2332 " : "42.2 ",(开头为字母)

原正则的问题

你之前写的(\d(?=[^,"]*[^\d]".*:))存在两个核心问题:

  1. 没有处理键开头的空格,无法匹配" 4WD..."这类带前置空格的情况;
  2. 正向预查的逻辑只能定位单个数字,无法关联到整个键的范围,加全局标志后只会零散匹配键内的数字,达不到选中整个键的目的。

正确正则表达式

根据需求,分两种场景给出方案:

1. 捕获符合条件的完整键内容(含前置空格)

这个正则可以直接匹配整个符合要求的键(包括前后引号):

"(\s*\d[^"]*)"\s*:
  • 解释:
    • ":匹配键的起始引号;
    • \s*:匹配键开头的任意数量空格(0个或多个);
    • \d[^"]*:匹配空格后的第一个数字,以及数字之后到结束引号前的所有非引号内容;
    • "\s*::匹配键的结束引号、后续空格和冒号,确保这是一个合法的JSON键结构。

2. 单独捕获键的第一个数字,同时保留完整键内容

如果需要单独提取第一个数字,同时保留整个键的内容,可以用分组捕获:

"\s*(\d)([^"]*)"\s*:
  • 解释:
    • 第一个捕获组(\d)就是你要找的忽略开头空格后的第一个数字;
    • 第二个捕获组([^"]*)是数字之后的键剩余内容;
    • 整体匹配确保只选中符合条件的JSON键。

处理HTML转义的引号

如果你的字符串中是HTML转义后的"而非直接的双引号,把正则里的"替换为"即可:

"\s*(\d)([^"]*)"\s*:

使用说明

  • 加上全局标志g,就能一次性匹配所有符合条件的键;
  • 注意:这个正则适用于无转义引号的常规JSON键场景,如果键内包含转义引号(比如"test\"key"),需要额外处理转义逻辑,但绝大多数普通JSON场景下足够使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:46:01