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

如何用正则表达式检测JSON对象是否含任意顺序的两个指定KV对

检测JSON对象中是否同时存在任意顺序的两个指定键值对

方法一:改进正则表达式

要匹配两个键值对的任意顺序,只需把两种顺序的情况用逻辑或(|)整合到正则中,同时可以考虑JSON中可能存在的空白字符,让正则更鲁棒:

^.*(("animal"\s*:\s*"dog".*"fish"\s*:\s*"tuna")|("fish"\s*:\s*"tuna".*"animal"\s*:\s*"dog")).*$
  • \s* 用来匹配键和值之间可能存在的任意空白(空格、制表符等)
  • 括号内的两个分支分别对应两种键值对顺序
  • 注意:这种方法仅适用于格式非常规整的JSON字符串,如果JSON中包含转义字符、多行字符串或其他复杂格式,正则很容易失效。

方法二:解析JSON后直接判断(推荐)

正则处理JSON本质上是一种临时方案,因为JSON的语法规则复杂,正则无法覆盖所有合法场景。更可靠的方式是先将JSON字符串解析成对象,再直接判断两个键值是否同时存在且符合预期:

JavaScript示例:

const jsonString = '{"color":"red","animal":"dog","drink":"water","food":"pizza","fish":"tuna","foo":"bar"}';
const data = JSON.parse(jsonString);
const hasRequiredPairs = data.animal === "dog" && data.fish === "tuna";
console.log(hasRequiredPairs); // 输出 true

Python示例:

import json

json_string = '{"color":"red","animal":"dog","drink":"water","food":"pizza","fish":"tuna","foo":"bar"}'
data = json.loads(json_string)
has_required_pairs = data.get("animal") == "dog" and data.get("fish") == "tuna"
print(has_required_pairs) # 输出 True

这种方法能正确处理所有合法的JSON格式,包括转义字符、任意空白、嵌套结构等,是生产环境中的首选方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:32:50