2017-03-28 99 views
0

我从终点的字符串,该字符串将是任何的形式如下所示如何将数组数组的字符串转换为数组的Javascript数组?

输入:

第一形式

Option1[opt1,opt4,opt8,opt7],Option5[opt2,opt3],Option6[opt5,opt6] 

预期输出

[ 
    Option1[opt1,opt4,opt8,opt7], 
    Option5[opt2,opt3], 
    Option6[opt5,opt6] 
] 

Option1[1,4,8,7],Option5[2,3],Option6[5,6] 

预期输出

[ 
    Option1[1,4,8,7], 
    Option5[2,3], 
    Option6[5,6] 
] 

第二形式

Option1[opt1],Option5[opt2],Option6[opt6] 

预期输出

[ 
    Option1[opt1], 
    Option5[opt2], 
    Option6[opt5] 
] 

Option1[1],Option5[2],Option6[6] 

预计输出

[ 
    Option1[1], 
    Option5[2], 
    Option6[5] 
] 

第三形式

Option1,Option5,Option6 or Item1,Item2,Item3 or abc1,xyz2,ccc3 

预计输出

[ 
    Option1, 
    Option5, 
    Option6 
] 

为第二和第三形式

.split(',') 

作品和收益预期的数组,但我在这里面临的挑战与第一种形式, 寻找一些选项(REG EXP),可以考虑],

注意:对不起,我的问题进行修改,因为我看到输入从端点到来正在改变,但现在我不会在这个问题

+3

请解释一下预期的输出,这是无效的JS。 – Teemu

+0

http://stackoverflow.com/questions/25988636/regex-split-with-comma-but-not-in-square-brackets-and-not-in-brackets –

+0

您的“预期产出”,除了无效JS,似乎没有涵盖第三种输入格式。 – nnnnnn

回答

2

拆分逗号“”跟着做出的投入更多的编辑由大写 “O”

str.split(/,(?=O)/) 
+0

谢谢@ guest271314,如果字符串包含Optionsxx,那么它会起作用如果它具有不同的值,例如第三种形式'Option1,Option5,Option6或Item1,Item2,Item3或abc1,xyz2,ccc3'的更新问题' – Sri

+0

@Sri如果字母字符开始匹配你可以使用'RegExp'' /,(?= [az])/ i'来匹配逗号','后面跟着az不区分大小写'var str =“Option1 [1,4,8,7],Option5 [2 ,3],选项6 [5,6],ABC1,XYZ2,ccc3,项目1,项目2,项目3" ; var res = str.split(/,(?= [a-z])/ i); console.log(res);' – guest271314

+0

我刚刚注意到输入的数组中有字符串,即'Option1 [opt1,opt4,opt8,opt7],Option5 [opt2,opt3],Option6 [opt5, opt6]'在这种情况下,它几乎表现得像'.split(',')' – Sri

0

下面尝试,使用正则表达式:

var check1 = 'Option1[1,4,8,7],Option5[2,3],Option6[5,6]'; 
 
var check2 = 'Option1[1],Option5[2],Option6[6]'; 
 
var check3 = 'Item1,Item2,Item3'; 
 

 
var regex = /\s*,\s*(?![^\[\]]*\])/g; 
 

 
var arr1 = check1.split(regex); 
 
var arr2 = check2.split(regex); 
 
var arr3 = check3.split(regex); 
 

 
console.log(arr1); 
 
console.log(arr2); 
 
console.log(arr3);

相关问题