我正在寻找正则表达式来从多维数组中获取数据。
我有这个数组括号表示法:test[0][data1]
。我想获得test
,0
和data1
。
我已经做到了:
new RegExp("([a-z0-9]*)(?:\\[([a-z0-9_]*)\\])", "i")
但它停在0
。
答案 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