Javascript 模式匹配以获取括号之间的字符串

Javascript 模式匹配以获取括号之间的字符串,javascript,regex,Javascript,Regex,我试图找到aggregate()和find()之间的字符串。下面是我的代码 var str1 = 'aggregate([{$group:{_id:{state:"$state",city:"$city"},sum:{$sum:"$pop"}}},{$sort:{sum:1}},{$group:{_id:"$_id.state",smallestcity:{$first:"$_id.city"},smallest:{$first:"$sum"},largestcity:{$last:"$_id.

我试图找到aggregate()和find()之间的字符串。下面是我的代码

var str1 = 'aggregate([{$group:{_id:{state:"$state",city:"$city"},sum:{$sum:"$pop"}}},{$sort:{sum:1}},{$group:{_id:"$_id.state",smallestcity:{$first:"$_id.city"},smallest:{$first:"$sum"},largestcity:{$last:"$_id.city"},largest:{$last:"$sum"}}}])'
var str2 = 'find({awards:{$elemMatch:{award:"Turing Award",year:{$gt:1980}}}}).limit(0)'

var matchPharse = /((.*))/;
var result = str1.match(matchPharse);
console.log(result); 
我得到的结果总是整个字符串,而不是

[{$group:{_id:{state:"$state",city:"$city"},sum:{$sum:"$pop"}}},{$sort:{sum:1}},{$group:{_id:"$_id.state",smallestcity:{$first:"$_id.city"},smallest:{$first:"$sum"},largestcity:{$last:"$_id.city"},largest:{$last:"$sum"}}}]

尝试以下模式:

var matchPharse = /((\[.*\]))/;

你只需要转义外括号。尝试:

var matchPharse = /\((.*)\)/;
对于括号内的内容,请使用
result[1]

((\[.*?\]))

您应该使用
非贪婪表达式。

尝试以下正则表达式:

var matchPharse= /\((.*)\)/g;
匹配
()
之间的任何序列

这是一个很好的例子

var str1='aggregate([{$group:{state:{$state:{$state:{$state,city:$city},sum:{$sum:$pop}}},{$sort:{$sort:{$sum:1},{$group:{{$id:$$state,$$smallestcity:{$first:$$id.city},最小的:{$first:$sum},最大的:{$last:$sum:$city:{$id.city}}
var str2='查找({awards:{$elemMatch:{award:{Turing award,年份:{$gt:1980}})。限制(0)'
var matchPharse=/\(.*)/;
var结果=str1.match(matchPharse);

警报(结果)这将包括parentheses@AvinashRaj我认为OP在“而不是”之后发布了预期输出,如果我在下面的拆分中做错了什么,请纠正我。在},var str={“a”:2000,“b”:“sam”},{“c”:1,“d”:1}var res=str.split(/(?:\},{124;\,{)/);console.log(res[0])/{“a”:2000,“b”:“sam”-一个括号缺少console.log(res[1])/“{“c”:1,“d”:1}”期望输出res 0={“a”:2000,“b”:“}如果在}上使用split sam code>