是的,可以进行完整的正则表达式验证。
大多数现代正则表达式实现都允许递归正则表达式,该正则表达式可以验证完整的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 ';它具有PCRE功能,在PHP中效果很好。应该在Perl中保持不变;并且可以肯定地适用于其他语言。JSON测试用例也成功。
更简单的RFC4627验证
一种更简单的方法是RFC4627第6节中指定的最小一致性检查。但是,它仅用作安全性测试和基本的非有效性预防措施:
var my_JSON_object = !(/[^,:{}[]0-9.-+Eaeflnr-u nrt]/.test( text.replace(/"(\.|[^"\])*"/g, ''))) && eval('(' + text + ')');


