1

私は次の正規表現を持っています..

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

これは、空でない JSON でエンコードされた文字列にのみ一致することを意図しています...

[ { object: HELLO } ]

次のような「空の」JSON応答を除外しながら...

[ ]

これらの応答には、空白が含まれる場合と含まれない場合があります。

私の正規表現は、いくつかのケースで機能するようです。

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

JSON の実際の有効性についてはあまり心配していませんが、JSON 内に空白以外の何かがあることを確認しています。[]

それを確認する最良の方法は何でしょうか?

4

2 に答える 2

1

[...]グループ化と文字クラスの両方に使用しているため、正規表現は正しくありません。

  • グループは括弧を使用して形成されます: (...).
  • 文字クラスは、角括弧を使用して形成されます: [...].

[.*]は文字クラスです。おそらく意図したように、「ゼロ個以上の任意の文字に一致する」という意味ではありません。これは、「1 つのドットまたはアスタリスクに正確に一致する」ことを意味します。

これらのエラーを修正した後、正規表現も簡略化できます。

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

これは、JSON が正しいかどうかを検証しません。文字列が次の条件を満たすことのみをチェックします。

  • で始まり[ます。
  • で終了し]ます。
  • 0 ~ 9、az、または AZ の少なくとも 1 文字を含む。
于 2012-08-09T20:47:47.327 に答える
0

代わりに、望ましくない状態があるかどうかを確認してみませんか?

^\[\s*\]$

空の JSON 応答があるかどうかを確認する必要があります

すなわち

  • それでは始まります[
  • スペースのみを含む (0 以上)
  • で終わる]
于 2012-08-09T20:56:56.283 に答える