1

我有以下正则表达式..

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

这意味着只匹配像这样的非空 JSON 编码字符串......

[ { object: HELLO } ]

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

[ ]

这些响应中可能有也可能没有空格。

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

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

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

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

4

2 回答 2

1

您的正则表达式不正确,因为您[...]同时用于分组和字符类。

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

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

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

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

这不会验证JSON 是否正确。它只检查字符串是否满足以下条件:

  • 以 开头[
  • 以 结束]
  • 至少包含 0-9、az 或 AZ 中的一个字符。
于 2012-08-09T20:47:47.327 回答
0

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

^\[\s*\]$

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

IE

  • 它开始于[
  • 它只包含空格(0 个或更多)
  • 它以]
于 2012-08-09T20:56:56.283 回答