2017-03-28 134 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);

相關問題