javascript解析json的正则表达式,完全看不明白,求你了!

[复制链接]
查看11 | 回复4 | 2011-3-23 12:58:54 | 显示全部楼层 |阅读模式
if(/^(\"(\\\\.|[^\\\\\\n\\r])*?\"|[,:{}\\[\\]0-9.\\- Eaeflnr-u \\n\\r\\t]) ?$/.test(s)){}
有见过上面正则表达式的仙人指点一下吧。看官方文档也是迷迷糊糊,后面来一个这样的表达式,这是书上修改以后的。
就这么多分了,全送上了。
回复

使用道具 举报

千问 | 2011-3-23 12:58:54 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">这个解析json并不通用
首先这个串分成两部分,看中间的或符号(|)
\"(\\\\.|[^\\\\\\n\\r])*?\"和[,:{}\\[\\]0-9.\\- Eaeflnr-u \\n\\r\\t]
先分解\"(\\\\.|[^\\\\\\n\\r])*?\"
它匹配一个双引号的字符串,两边引号不说了括号内一个“|”又分成两段 “\\\\.“匹配一个转义字符
比如js字符串里的\\n,\\r,\\\',\\\"等。[^\\\\\\n\\r]匹配一个非\\,回车换行的字符 其实它就是js里字符串的规则---不包含回车换行,回车换行用 \\n\\r表示,\\后面跟一个字符表示转义
其次看[,:{}\\[\\]0-9.\\- Eaeflnr-u \\n\\r\\t]
它匹配一个单个字符,这个字符可以是 ,,:,{,},[,],数字,除 \"\\n\" 之外的任何单个字符,-, ,E,a,e,f,l,n,r-u之间的字符,回车,换行,制表符,
就这些
结合起来,它其实把一个json拆分成若干段,字符串单独成一段,其它的都是单个字符成段(回车,换行,:,{,}等)

















<h4 class=\"ask\">追问





<pre class=\"replyask-text\" id=\"content-2239793\">纳闷,既然.匹配了除\\n外的任何单个字符,为什么还要加\\- Eaeflnr-u,E和e应该是对数的符号,但另外几个不是多余的吗
回复

使用道具 举报

千问 | 2011-3-23 12:58:54 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2265464\">你确定这代码没改过,并且是高手写的?
或者他只是为了适应自己的网站
正则里应该没有对数吧
回复

使用道具 举报

千问 | 2011-3-23 12:58:54 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2285573\">代码是javascript DOM高级程序设计的作者对rfc4627_json这里面的代码作了部分修改,都差不多,你去看下rfc4627_json这个文档好么。加你QQ好不
回复

使用道具 举报

千问 | 2011-3-23 12:58:54 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-2288620\">我QQ就是百度号
这个json正则并不是验证json格式的,而是过滤用的,以防json中含有活动成分
对于json中字符串之外的字符也作了限制
用它来验证一个字串是不是json是不行的.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行