获取两个字符之间的所有字符串的数组(正则表达式和JavaScript)

获取两个字符之间的所有字符串的数组(正则表达式和JavaScript),javascript,arrays,regex,Javascript,Arrays,Regex,我不是正则表达式专家,我只想做这件事。 创建此阵列: ["[1+5]", "1+5", "[2*[1+1]+5]", "2*[1+1]+5", "[1+1]", "1+1"] 从该字符串: "blalbla[1+5] blabla [2*[1+1]+5] blalbla" 我已经测试了很多方法,我头痛。。。 下面是测试我所做工作的链接: 非常感谢:)不要使用正则表达式。只需使用一个循环 函数*parse(str){ var指数=[]; 对于(var i=0;i不使用正则表达式,只使用循环

我不是正则表达式专家,我只想做这件事。 创建此阵列:

["[1+5]", "1+5", "[2*[1+1]+5]", "2*[1+1]+5", "[1+1]", "1+1"]
从该字符串:

"blalbla[1+5] blabla [2*[1+1]+5] blalbla"
我已经测试了很多方法,我头痛。。。 下面是测试我所做工作的链接:


非常感谢:)

不要使用正则表达式。只需使用一个循环

函数*parse(str){
var指数=[];

对于(var i=0;i不使用正则表达式,只使用循环

函数*parse(str){
var指数=[];

对于(var i=0;i,可以使用干净的正则表达式,如下所示:

/\[[^[]+\]|\[.+?\]([^[])+\]/g
说明: 第1组:
\[[^[]+\]
查找开始和结束时没有其他括号的括号

|
第2组:

\[.+?\]
查找括号的开头,直到括号结束,然后
([^[])+\]
继续查找直到最后一个“]”为止不包含“[”的所有字符

var ExpToReturn;
var text=“blalbla[1+5]blabla[2*[1+1]+5]blalbla”;
var str=text.match(/\[^[]+\]\[.+?\]([^[])+\]/g);
ExpToReturn=(str);

警报(ExpToReturn);
可以使用如下干净的正则表达式:

/\[[^[]+\]|\[.+?\]([^[])+\]/g
说明: 第1组:
\[[^[]+\]
查找开始和结束时没有其他括号的括号

|
第2组:

\[.+?\]
查找括号的开头,直到括号结束,然后
([^[])+\]
继续查找直到最后一个“]”为止不包含“[”的所有字符

var ExpToReturn;
var text=“blalbla[1+5]blabla[2*[1+1]+5]blalbla”;
var str=text.match(/\[^[]+\]\[.+?\]([^[])+\]/g);
ExpToReturn=(str);

警报(ExpToReturn);
如果你有任意级别的嵌套括号,你就不能使用正则表达式。JS正则表达式不支持递归。或者,你可能想使用。这个练习的目的是什么?你要对它们进行评估吗?例如,用
2
替换
1+1
?@WiktorStribiżew谢谢你提供的信息。@georg是的,然后我使用eval方法。Oriol's的答案是令人满意的答案。如果你有任意级别的嵌套括号,你就不能使用正则表达式。JS正则表达式不支持递归。或者,你可能想使用。这个练习的目的是什么?你打算对它们进行评估吗?例如,将
1+1
替换为
2
?@WiktorStribiżew谢谢你提供的信息。@georg是的,那么我使用评估方法。Oriol的答案是令人满意的。你的方法也很好。但我更喜欢Oriol的方法。非常感谢你有用的回答。你的方法也很好。但我更喜欢Oriol的方法。非常感谢你有用的答案