我将此作为数据输入(它是动态的,因此它可以是同一个字符串中的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"
答案 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);