用于恢复损坏的JSON的正则表达式

用于恢复损坏的JSON的正则表达式,json,regex,Json,Regex,我通过POST将JSON数据发送到PHP后端(我没有任何进一步的访问权限) 当我进行数据导出时,json缺少所有引号,因此看起来如下所示: [ { key: any text with spaces, emptykey: , foo: 0}, {...} ] 我认为这很容易解决,因为我的字符串中没有一个包含逗号 因此,我假设可以将整个JSON数组拆分为: (1) 对象由{..} (2) 在键/值对中,使用逗号, 用一个简单的正则表达式替换怎么做?不是真正的简单正则表达式替换,因为它需

我通过POST将JSON数据发送到PHP后端(我没有任何进一步的访问权限)

当我进行数据导出时,json缺少所有引号,因此看起来如下所示:

[
  { key: any text with spaces, emptykey: ,  foo: 0},
  {...}
]
我认为这很容易解决,因为我的字符串中没有一个包含逗号

因此,我假设可以将整个JSON数组拆分为: (1) 对象由
{..}
(2) 在键/值对中,使用逗号

用一个简单的正则表达式替换怎么做?

不是真正的简单正则表达式替换,因为它需要嵌套的级联正则表达式

这将起作用(但也可参见下文@Mohammad Yusuf Ghazi的解决方案):

var src='[{key:any text with spaces,emptykey:,foo:0},{key2:other text with spaces,emptykey2:,foo2:2},]';
var lookforObj=/\{([^}]*)\}/g;
函数objRepl(匹配,obj){
返回{'+obj.replace(lookforPair,pairReplace)+'}';
}
var lookforPair=/\s*([^,]+)\s*(,?)\s*/g;
函数对替换(匹配、对、逗号){
返回对.replace(lookforKey,keyplace)+(逗号?',':'';
}
var lookforKey=/\s*([^:]+):\s*(.*)/;
功能键替换(匹配、键、值){
返回''+key+':“'+value+'”;
}
log(src.replace(lookforObj,objRepl))不是一个简单的正则表达式替换,因为它需要嵌套的级联正则表达式

这将起作用(但也可参见下文@Mohammad Yusuf Ghazi的解决方案):

var src='[{key:any text with spaces,emptykey:,foo:0},{key2:other text with spaces,emptykey2:,foo2:2},]';
var lookforObj=/\{([^}]*)\}/g;
函数objRepl(匹配,obj){
返回{'+obj.replace(lookforPair,pairReplace)+'}';
}
var lookforPair=/\s*([^,]+)\s*(,?)\s*/g;
函数对替换(匹配、对、逗号){
返回对.replace(lookforKey,keyplace)+(逗号?',':'';
}
var lookforKey=/\s*([^:]+):\s*(.*)/;
功能键替换(匹配、键、值){
返回''+key+':“'+value+'”;
}

log(src.replace(lookforObj,objRepl))检查此:检查此:检查此:。你可以使用这个正则表达式来修改你的答案@你的正则表达式不是为穆罕默德·优素福·加齐工作的me@MohammadYusufGhazi哦,是的,这很优雅。比我自己的答案更简单,所以我不想“偷走”它!相反,你应该用这个来写你自己的答案。@ManuKaracho谢谢你接受我的答案。但我很惊讶MohammadYusufGhazi的那个不适合你。正如我刚才所评论的,它似乎更好。@cFreed没有问题,您可以接受它,如果愿意,还可以添加第二个方法。请检查此项:。你可以使用这个正则表达式来修改你的答案@你的正则表达式不是为穆罕默德·优素福·加齐工作的me@MohammadYusufGhazi哦,是的,这很优雅。比我自己的答案更简单,所以我不想“偷走”它!相反,你应该用这个来写你自己的答案。@ManuKaracho谢谢你接受我的答案。但我很惊讶MohammadYusufGhazi的那个不适合你。正如我刚才所评论的,它似乎更好。@cFreed没有问题,您可以接受它,如果愿意,还可以添加第二种方法。