使用正则表达式从javascript函数返回语句中查找键/值

使用正则表达式从javascript函数返回语句中查找键/值,javascript,regex,Javascript,Regex,简而言之,我不太清楚如何解释,所以标题可能有点混乱 我有一段javascript代码字符串:(从换行符、双空格等中去掉): 我试图找出如何从这个函数的return语句中获取一个键/值数组。执行代码或使用eval不是一个选项 因此,本质上,我希望匹配return语句的大括号之间的任何内容,并得到一个键/值数组作为返回 预期结果如下: { 'foo' : 'this.test', 'bar' : 'this.ParentFunctionAdd' } 提前谢谢 如果您更喜欢使用正则表

简而言之,我不太清楚如何解释,所以标题可能有点混乱

我有一段javascript代码字符串:(从换行符、双空格等中去掉):

我试图找出如何从这个函数的return语句中获取一个键/值数组。执行代码或使用eval不是一个选项

因此,本质上,我希望匹配return语句的大括号之间的任何内容,并得到一个键/值数组作为返回

预期结果如下:

{
    'foo' : 'this.test',
    'bar' : 'this.ParentFunctionAdd'
}

提前谢谢

如果您更喜欢使用正则表达式,这里有一个解决方案

/([^{,]+):([^},]+)/g

这是输出

[" foo: this.test", " bar: this.ParentFunctionAdd "]
如您所见,使用时需要修剪()值


检查

你能假设你想要的对象没有子对象吗?@PaulS。不,但这将是下一个“挑战”。就目前而言,这就足够了:)如果return语句引用的变量本质上就是我需要比较的对象,我可以使用相同的正则表达式,只需稍加修改。例如,您可以使用。值可以是任意表达式,还是它们总是
this.propertyname
?@Harold:Paul S:“你能假设你想要的对象不会有子对象吗?”哈罗德:“嗯,不会。但这将是下一个‘挑战’。“不会的。这意味着,即使您针对上述问题提出了正则表达式解决方案,您也无法将其用于下一个挑战。事实上,问题变成了你不能单纯使用正则表达式的东西,你需要一个解析器。这完全符合我的需要!也比我想象的要简单得多,呵呵。非常感谢@哈罗德:只要你明白解决方案的局限性。例如,它在
函数(a,b){this.super('uuuu-construct',a,b);返回{foo:{ka:boom},bar:this.parentfunctiondd};}
()和
函数(a,b){this.super('uu-construct',a,b);返回{foo:'bo om',bar:this.parentfunctiondd};}
()。(没有反对hex在范围内工作,只是强调了限制。)
"function (a, b) { this.super('__construct', a, b); return { foo: this.test, bar: this.ParentFunctionAdd }; }".match(/([^{,]+):([^},]+)/g);
[" foo: this.test", " bar: this.ParentFunctionAdd "]