Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式匹配方括号内花括号内的字符串_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式匹配方括号内花括号内的字符串

Javascript 正则表达式匹配方括号内花括号内的字符串,javascript,regex,Javascript,Regex,上面的正则表达式返回括号之间的文本 例如: var q = '{[{main}(other data)][{data}(other data)][{address}(other data)]}'; var qm = q.match(/\[(.*?)\]/g); console.log(qm); 如何重写上面的正则表达式,所以我提供了一个类似'data'的字符串,它将返回[{data}(其他数据)]。i、 e带括号的部分,其中包含大括号中的字符串。匹配大括号中的字符串 [{data}(

上面的正则表达式返回括号之间的文本

例如:

var q = '{[{main}(other data)][{data}(other data)][{address}(other data)]}';

var qm = q.match(/\[(.*?)\]/g);  

console.log(qm);

如何重写上面的正则表达式,所以我提供了一个类似
'data'
的字符串,它将返回
[{data}(其他数据)]
。i、 e带括号的部分,其中包含大括号中的字符串。

匹配大括号中的字符串

 [{data}(other data)]

var q='{[{main}(其他数据)][{data}(其他数据)][{address}(其他数据)]}';
var qm=(str)=>q.match(新的RegExp(`\\[{${str}}}\\\\(.*?\\\)\\\]`,'g');

console.log(qm(“数据”))
使用
qm
变量,可以迭代匹配并测试第一个花括号之间的字符串,如下所示:

var q='{[{main}(其他数据)][{data}(其他数据)][{address}(其他数据)]}';
var qm=q.match(/\[(.*)\]/g);
对于(让质量管理中的e)
如果(e.match('\{([^\)]+)\}')[1]==“数据”)

控制台日志(e)它必须是正则表达式吗?您建议使用什么其他方法?用于获取由括号包围的元素数组。一旦你有了数组,搜索每个元素寻找所需字符串应该是一件简单的事情。你需要使用正则表达式构造函数,比如'var regex=new RegExp('\[\\{'+'data'+'\\}[^\]+\]');用要匹配的变量替换“data”。代码中的
${str}
是什么?它是正则表达式文本还是模板文本。旧版本的IE是否支持此功能?@jmenezes它是一个模板文本。为了支持浏览器,您可以像使用第一个代码片段一样使用普通字符串。你知道我如何在没有结果中的
[
]
的情况下获得结果吗。因此,它不是
[{data}(其他数据)]
,而是
{data}(其他数据)
(无方括号)。如果可能的话,我会再发一个问题。
\[{data}\(.*?*\)\]