ユーザーがJSONを提供するCLIアプリケーションがあります。 JSONが有効かどうかを確認する必要があります。JSON LIKE文字列が有効かどうかを確認します。 - JS regex
function isJsonValid(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
しかし、私は私のアプリをデバッグしながら、私は、コマンドからのすべての"
と'
とspaces
が取り除かれていることを少し問題があることに気づいた。私はこのようなsomehtingは素晴らしい仕事も見つけ 。ようにJSON :私は、これはJSONが何とか有効で取り除かかどうかをチェックします正規表現を必要とする
{key1:value1,key2:value2}
:
{
"key1": "value1",
"key2": "value2"
}
は、次のようなものに変更されます。
だから、のように見えるがすべき結果:
re.test({key1:value1,key2:value2}) // true
re.test({key1:value1}) // true
re.test({key1:value1,}) // false, extra comma
re.test({key1:value1, key2}) // false, missing value of key2
re.test({key1:value1, key2:value2) // false, missing closing }
re.test({key1:value1, key2:value2}}) // false, extra closing }
誰かが正規表現の部分で私を助けてくださいことはできますか?残念ながら、これは私の強い側面ではありません。
をJSONはもはやJSONですが、それはあなたの入力されているとして、あなたがそれを検証したい場合は、あなただけ行う「取り除きません」トップレベルの 'key:value'ペアのみで示された単純なケースをテストする必要がありますか、またはネストされたオブジェクトや配列を許可する必要がありますか? – nnnnnn
うん、入れ子配列はありません。したがって、JSONが次のようになっているかどうかテストする必要があります: '{' - 開き括弧、 'key' +': '+' value' +閉じ括弧 '}' 'key:value'部分は複数回繰り返すことができ、カンマで – Andurit
???私はここで何か重要なものを逃しています関数が 'true'を返す場合、渡されたJSONは有効で、' false'を返すとエラーが発生し、JSONは無効です。なぜ再確認するのが気になるのですか? – Teemu