[解決済み] JSONを検証するための正規表現
2022-12-26 13:05:33
質問
jsonのバリデーションを行うためのREGEXを探しています。
私はRegexの非常に新しいですし、私はRegexでパースが悪いことを十分に知っていますが、それは検証のために使用することができますか?
どのように解決するのですか?
はい、完全な正規表現による検証は可能です。
最近のほとんどの正規表現実装では、再帰的な正規表現が可能であり、完全なJSONシリアライズ構造を検証することができます。そのため json.org 仕様 を使用すると、非常に簡単です。
$pcre_regex = '
/
(?(DEFINE)
(?<number> -? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)? )
(?<boolean> true | false | null )
(?<string> " ([^"\\\\]* | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9a-f]{4} )* " )
(?<array> \[ (?: (?&json) (?: , (?&json) )* )? \s* \] )
(?<pair> \s* (?&string) \s* : (?&json) )
(?<object> \{ (?: (?&pair) (?: , (?&pair) )* )? \s* \} )
(?<json> \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) \s* )
)
\A (?&json) \Z
/six
';
これはPHPでかなりうまく PCRE関数 . Perlでもそのまま動くはずです。そして、他の言語にも確実に適用できます。また、これは JSON テストケース .
よりシンプルなRFC4627の検証
よりシンプルなアプローチとして、以下のように最小限の一貫性チェックがあります。 RFC4627、セクション 6 . しかし、これはセキュリティ テストと基本的な非有効性の予防措置として意図されているだけです。
var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
eval('(' + text + ')');
関連
-
[解決済み] Regex - ハイフンはエスケープされるべきか?重複
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] JSON文字列を安全にオブジェクトに変換する
-
[解決済み] 正規表現を使用した電話番号の検証方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】改行を含む任意の文字にマッチする正規表現
-
[解決済み] 小数点以下2桁までの値にマッチする正規表現
-
[解決済み] Kibanaクエリの完全一致
-
[解決済み] 正規表現の冒頭の感嘆符と末尾のドル記号は何ですか?
-
[解決済み] 文字列の完全一致のための正規表現
-
[解決済み] Bashスクリプトで文字列が正規表現にマッチするかどうかをチェックする
-
[解決済み] 正規表現は、文字列がターゲットで終わる場合にのみマッチします。
-
[解決済み] 一致した正規表現パターンを awk で表示するには?
-
[解決済み] regex オプションのワードマッチ
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx