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

时间:2015-12-14 09:04:40

标签: javascript jquery regex

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

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

我已经做到了:

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

但它停在0

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容循环显示每个结果。

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

这种方法优于扩展正则表达式的优点是,您可以在括号中为多个项目执行此操作。例如,如果使用上面的

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

会导致

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

jsfiddle 一定要启用jQuery