Select JSON 具有特殊字符的值

Select JSON values with special characters

我想检测 JSON 值中的异常情况。 这是通过 jq

进行数据查询的示例
"2014-03-26 01:58:00"
"9019549360"
"109092812_20150626"
"134670164"
""
"97695498"
"680561513"

我想显示所有包含 -_blank.

的值

换句话说,我想显示以下输出

"2014-03-26 01:58:00"
"109092812_20150626"
""

现在,我尝试了以下方法:

select (. | contains("-","_"," "))'

这似乎可行,但为了使其更健壮,我想扩展它以包括所有特殊字符。

您的查询不会检测到空字符串,并且可能会多次发出相同的字符串。使用 test 会更容易,例如:

select( length==0 or test("[-_ ]") )

还要注意开头的'.'在您的查询中是不必要的。

附录

从其中一条评论来看,您似乎希望指定“[^a-zA-Z0-9]”或类似 test 的参数。