用于匹配非空JSON字符串的正则表达式?

时间:2012-08-09 20:44:49

标签: regex json

我有以下正则表达式..

(^\[[.*][[0-9a-zA-Z][0-9a-zA-Z]]*[.*]\])

这意味着只匹配非空的JSON编码字符串,如此...

[ { object: HELLO } ]

同时排除“空”JSON响应,例如......

[ ]

这些回复可能有也可能没有空格。

我的正则表达式似乎适用于某些情况,即..

[ ] <---- does not match.
[ HELLO ] <---- matches.
[ { HELLO } ] <---- does not match.

我并不太关心JSON的实际有效性,而是确保[]

中除了空格之外还有其他内容

检查它的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您的正则表达式不正确,因为您对分组和字符类都使用[...]

  • 使用括号形成组:(...)
  • 使用方括号形成字符类:[...]

表达式[.*]是一个字符类。它并不意味着你可能想要的“匹配任何字符的零或更多”。这意味着“只匹配一个点或星号”。

修复这些错误后,您的正则表达式也可以简化:

^\[.*[0-9a-zA-Z]+.*\]$

如果JSON正确,验证。它只检查字符串是否满足以下条件:

  • [开始。
  • ]结束。
  • 包含0-9,a-z或A-Z中的至少一个字符。

答案 1 :(得分:0)

为什么不检查你是否有你不想要的条件?

^\[\s*\]$

应检查您是否有空的JSON响应

  • [
  • 开头
  • 它只包含空格(0或更多)
  • ]
  • 结尾