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

如何在jq中检查字符串数组是否包含指定的精确字符串?

实现jq对JSON数组的精确字符串匹配

你遇到的问题是因为jq的contains()函数对数组的匹配逻辑是子串包含,而非精确成员匹配——它会检查数组中是否存在元素包含目标字符串(比如"aa"包含"a",所以contains(["a"])返回true)。

要实现精确匹配,可以用以下几种方法:

方法1:使用IN运算符(jq 1.6+支持)

这是最简洁的写法,直接判断目标字符串是否是数组的成员:

# 检查数组是否包含"aa"(精确匹配)
echo '["aa", "bb", "cc"]' | jq '"aa" IN .'
# 输出:true

# 检查数组是否包含"a"
echo '["aa", "bb", "cc"]' | jq '"a" IN .'
# 输出:false

方法2:使用any()函数(兼容低版本jq)

通过遍历数组元素,判断是否存在与目标值严格相等的元素:

# 精确匹配"aa"
echo '["aa", "bb", "cc"]' | jq 'any(.[]; . == "aa")'
# 输出:true

# 检查"a"
echo '["aa", "bb", "cc"]' | jq 'any(.[]; . == "a")'
# 输出:false

方法3:使用index()函数

index()会返回目标值在数组中的索引位置,不存在则返回null,通过判断索引是否存在实现精确匹配:

# 精确匹配"aa"
echo '["aa", "bb", "cc"]' | jq 'index("aa") != null'
# 输出:true

# 检查"a"
echo '["aa", "bb", "cc"]' | jq 'index("a") != null'
# 输出:false

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:26:04