栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用于解析单个键的正则表达式:JavaScript中的JSON值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用于解析单个键的正则表达式:JavaScript中的JSON值

我强烈建议您不要这样做。JSON不是此处明确指出的常规语言:https : //cstheory.stackexchange.com/questions/3987/is-
json-a-regular-language

引用以上文章:

例如,考虑一个由数组组成的数组:

[ [ [ 1, 2], [2, 3] ] , [ [ 3, 4], [ 4, 5] ] ]

显然,您无法使用真正的正则表达式进行解析。

我建议将JSON转换为对象(JSON.parse),并实现find函数遍历该结构。

除此之外,您还可以查看Douglas
Crockford的json2.js解析方法的内容。也许经过更改的版本将允许您搜索JSON字符串并仅返回您要查找的特定对象,而无需将整个结构转换为对象。仅当您从不从JSON检索任何其他数据时才有用。如果这样做的话,您可能也已经将整个事情从一开始就进行了转换。

编辑

为了进一步展示正则表达式是如何分解的,下面是一个正则表达式,它试图解析JSON

如果将其插入http://regexpal.com/,并选中“全部匹配”。您会发现它可以很好地匹配某些元素,例如:

正则表达式

"Comments"[ :]+((?=[)[[^]]*]|(?={){[^}]*}|"[^"]*")

JSON匹配

"Comments": [     {         "User":"Fairy God Mother",         "Comment": "Ha, can't say I didn't see it coming"     } ]

正则表达式

"Name"[ :]+((?=[)[[^]]*]|(?={){[^}]*}|"[^"]*")

JSON匹配

"Name": "Humpty"

但是,一旦您开始查询具有嵌套数组的高级结构(例如“帖子”),就会发现您无法正确返回该结构,因为正则表达式没有上下文,其中“]”是指定的结尾结构体。

正则表达式

"Posts"[ :]+((?=[)[[^]]*]|(?={){[^}]*}|"[^"]*")

JSON匹配

"Posts": [  {      "Title": "How I fell",      "Comments": [          {   "User":"Fairy God Mother",   "Comment": "Ha, can't say I didn't see it coming"          }      ]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437134.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号