正则表达式验证JSON

前端之家收集整理的这篇文章主要介绍了正则表达式验证JSON前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一个正则表达式,让我验证json。

我是新的Regex和我知道足够的解析与Regex是坏,但它可以用于验证吗?

(这个正则表达式是从证明错误的部门给你的。)

是的,一个完整的regex验证是可能的。

大多数现代的正则表达式实现允许递归的regexpressions,它可以验证一个完整的JSON序列化结构。 json.org specification使它相当简单。

$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 functions 相当不错。在Perl中应该没有修改;并且当然可以适用于其他语言。它也成功与JSON test cases

简化RFC4627验证

一个更简单的方法是在RFC4627,section 6中规定的最小一致性检查。然而它只是作为安全测试和基本的非有效性预防措施:

var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
         text.replace(/"(\\.|[^"\\])*"/g,''))) &&
     eval('(' + text + ')');

猜你在找的正则表达式相关文章