Javascript 多维数组括号表示法的正则表达式

Javascript 多维数组括号表示法的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我正在寻找从多维数组中获取数据的正则表达式 我有这个数组括号表示法:test[0][data1]。我想得到测试,0和data1 我已作出以下声明: new RegExp("([a-z0-9]*)(?:\\[([a-z0-9_]*)\\])", "i") 但是它会在0处停止。您可以使用以下命令来循环每个结果 var regex = /([a-z0-9_]*)(?:\[([a-z0-9_]*)\])/ig; var str = "test[0][data1]"; var match; var fi

我正在寻找从多维数组中获取数据的正则表达式

我有这个数组括号表示法:
test[0][data1]
。我想得到
测试
0
data1

我已作出以下声明:

new RegExp("([a-z0-9]*)(?:\\[([a-z0-9_]*)\\])", "i")

但是它会在
0

处停止。您可以使用以下命令来循环每个结果

var regex = /([a-z0-9_]*)(?:\[([a-z0-9_]*)\])/ig;
var str = "test[0][data1]";
var match;
var first = false;
while ((match = regex.exec(str)) !== null) {
  if(!first) console.log(match[1]);
  console.log(match[2]); //Or whatever you would like to do with the found result
}
这将导致

test
0
data1
test
0
data1
elephant
sandyBeach
hall
与仅仅扩展正则表达式相比,这种方法的优点是,可以对括号中的任意多个项执行此操作。例如,如果使用上述

var str = "test[0][data1][elephant][sandyBeach][hall]"
会导致

test
0
data1
test
0
data1
elephant
sandyBeach
hall
但是,如果需要对包含多个表达式的字符串执行此方法,则需要捕获此表达式,然后将
first
变量重置为true

var regex = /([a-z0-9_]*)(?:\[([a-z0-9_]*)\])/ig;
var str = "test[0][data1] test[elephant] rhino[walrus]";
var match;
var first = true;
while((match = regex.exec(str)) !== null) {
  if(match[1] != null && match[1] != '') {
    if(!first) console.log('');
    console.log(match[1]);
  }
  console.log(match[2]);
  first = false;
}
结果:

test
0
data1

test
elephant

rhino
walrus

确保启用jQuery

重复模式
(“([a-z0-9]*)\\[([a-z0-9\]*)\]\\[([a-z0-9\]*)\\[”,“i”)
使用全局修饰符(g)和不区分大小写的修饰符(i),我认为这会有所帮助,如果方括号内只有2个值,请尝试。但是,您可以使用子字符串方法获取第一个部分,然后在删除第一个和最后一个括号后使用
][
分割第二个部分。我的答案最初有一个无限循环。请确保看到更新的循环。此外,我还添加了一个小提琴链接供您测试/播放。