var q = '{[{main}(other data)][{data}(other data)][{address}(other data)]}';
var qm = q.match(/\[(.*?)\]/g);
console.log(qm);
上面的正则表达式返回括号之间的文本。
例如:
[{data}(other data)]
如何重写上面的正则表达式,所以我提供了一个类似'data'
的字符串,它将返回[{data}(other data)]
。即带有括号的部分,其中大括号中包含字符串。
答案 0 :(得分:1)
在花括号内匹配字符串
\[{data}\(.*?*\)\]
var q = '{[{main}(other data)][{data}(other data)][{address}(other data)]}';
var qm = (str) => q.match(new RegExp(`\\[{${str}}\\(.*?\\)\\]`, 'g'));
console.log(qm('data'));
在花括号和括号内匹配字符串
\[{data}\(.*?data[^)]*\)\]
var q = '{[{main}(other data)][{data}(other data)][{address}(other data)]}';
var qm = (str) => q.match(new RegExp(`\\[{${str}}\\(.*?${str}[^)]*\\)\\]`, 'g'));
console.log(qm('data'));
答案 1 :(得分:0)
使用您的qm
变量,可以遍历匹配并测试第一个花括号之间的字符串,如下所示:
var q = '{[{main}(other data)][{data}(other data)][{address}(other data)]}';
var qm = q.match(/\[(.*?)\]/g);
for (let e of qm)
if (e.match('\{([^\)]+)\}')[1] == "data")
console.log(e);