Javascript - 拆分动态字符串获取括号内的值

时间:2010-09-05 06:30:10

标签: javascript regex split

我将此作为数据输入(它是动态的,因此它可以是同一个字符串中的1个最多5个括号)

data["optionBase"] = {} //declaration
data["optionBase"]["option"] = {} //declaration
data["optionBase"]["option"][value] = {} //declaration
data["optionBase"]["option"][value]["detail"] = somethingHere

每一行都是一个字符串,而不是一个数组或任何其他类型的javascript对象。 我怎么能从包含这样的东西的字符串中得到一个数组:

第1行:

result[0] = "optionBase"

第2行:

result[0] = "optionBase"
result[1] = "option"

第3行:

result[0] = "optionBase"
result[1] = "option"
result[2] = value

第4行:

result[0] = "optionBase"
result[1] = "option"
result[2] = value
result[3] = "detail"

1 个答案:

答案 0 :(得分:1)

var s1 = 'data["optionBase"] = {} //declaration';
var s2 = 'data["optionBase"]["option"] = {} //declaration';
var s3 = 'data["optionBase"]["option"][value] = {} //declaration';
var s4 = 'data["optionBase"]["option"][value]["detail"] = somethingHere';
var a = [s1, s2, s3, s4];
var regex = /data\[([^\]]+)\](?:\[([^\]]+)\])?(?:\[([^\]]+)\])?(?:\[([^\]]+)\])?/;
for(var i = 0; i < 4; i++)
{
  var result = a[i].match(regex);
  //result[0] contains the whole matched string
  for(var j = 0; j < 5; j++)
    console.log(result[j]);
}

如果你想让它变得动态,你可以提取字符串并分开][

var s = 'data["optionBase"]["option"][value]["detail"] = somethingHere';
var m = s.match(/data((?:\[[^\]]+\])+)/);
var substr = m[1].substring(1, m[1].length - 1);
var array = substr.split("][");
console.log(array);