我有一个字符串,我想创建一个甚至出现“[]”
的数组"Match[0][a][5][b][0][d][2]"
我想拆分它们并根据“[]”的实例使用这个字符串创建一个数组。数组的每个元素必须出现2次“[]”,而下一个元素又出现两次“[]”。换句话说,我想创建一个甚至出现“[]”
的数组我想从字符串中创建一个数组:
["Match[0]['a']", "Match[0]['a'][5]['b']", "Match[0]['a'][5]['b'][0]['d']"]
使用javascript / jQuery
我已经尝试过匹配,但我只能得到它。
// ['part1.abc', 'part2.abc', 'part3.abc', 'part4']
'part1.abc.part2.abc.part3.abc.part4'.match(/[^.]+(\.[^.]+)?/g);
答案 0 :(得分:1)
您可以使用match(/\[.\]/g)
获取每个括号,然后通过将两个加两个来组合您的数组。
var matches = "Match[0][a][5][b][0][d][2]".match(/\[(.)\]/g);
var result = [];
for (var i = 0; i < matches.length; i += 2) {
var brackets = '';
for(var j = 0; j< i; j++) {
brackets += matches[j];
}
result.push("Match" + brackets);
}
result.shift();
答案 1 :(得分:1)
您可以获取数组中的各个部分,然后操作结果,直到它具有您想要的形式。一个例子可能是这个:
var str = "Match[0][a][5][b][0][d][2]";
var result = [];
str.split(/[\]\[]{1,2}/).slice(0,-1).reduce(function(acc,item, index) {
acc += '[' + (isNaN(item) ? "'" + item + "'" : item) + ']';
if (index %2 === 0 && index !== 0) {
result.push(acc);
}
return acc;
});
console.log(result) // ["Match[0]['a']", "Match[0]['a'][5]['b']", "Match[0]['a'][5]['b'][0]['d']"]
答案 2 :(得分:1)
哇它的乐趣:) ...尝试api,看看大家是如何解决它的。 This is what i tried看看这是否有用。
str = "STR[1][3][4d][re]"
var re=/\[\w+\]/g;
var mat = str.match(re);
var ar = [];
for(i=2; i<= mat.length; i=i+2){
ar[ar.length] = "STR" + mat.slice(0,i).join("")
}
console.dir(ar)