我试图提高我对正则表达式的理解,但这个有我很神秘。 我开始与定义为一些文字:正则表达式替换JSON是从数组中删除一个对象
var txt = "{\"columns\":[{\"text\":\"A\",\"value\":80},{\"text\":\"B\",\"renderer\":\"gbpFormat\",\"value\":80},{\"text\":\"C\",\"value\":80}]}";
,并做了替换如下:
txt.replace(/\"renderer\"\:(.*)(?:,)/g,"\"renderer\"\:gbpFormat\,");
导致:
"{"columns":[{"text":"A","value":80},{"text":"B","renderer":gbpFormat,"value":80}]}"
我所期待的是为renderer
属性值删除引号;发生了哪些事情,也是C
这一列完全没有了!我真的很喜欢有人解释我的Regex如何删除列C
?
作为一个额外的好处,如果你可以解释如何删除renderer
任何值附近的引号(即,所以我不必在正则表达式中硬编码值gbpFormat),这将是太棒了。
'txt'从哪里来?它可能会被打破JSON,我会尝试修复它的源头。然后你可以解析它并使用JavaScript语法改变属性。 – elclanrs 2014-11-05 23:51:26
这是因为你正在使用一个贪婪的操作符,使用'\“渲染器\”(:。*?)(?:,)将它改变为一个懒惰的操作符' – 2014-11-05 23:53:25