选择带有特殊字符的JSON值

时间:2018-12-31 19:32:06

标签: json string select jq any

我希望检测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("-","_"," "))'

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

1 个答案:

答案 0 :(得分:1)

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

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

还要注意,初步的“。”在您的查询中是不必要的。

附录

从其中一项注释中,您似乎将要指定“ [^ a-zA-Z0-9]”或类似的变量作为test的参数。