2011-02-24 105 views
1

內外定界符在我的JavaScript代碼,我有一個字符串,它是這樣的:分割字符串在JavaScript中

"1943[15]43[67]12[32]" 

我想返回一個這樣的數組:

["1","9","4","3","15","4","3","67","1", 2","32"] 

也就是說,我希望它將每個字符都分開,除了括號內的數字,我想將它們保留爲一個元素。

有沒有一個優雅的方式來做到這一點?

回答

3
var str = '1943[15]43[67]12[32]', 
    matches = str.match(/\d|\[\d+\]/g); 

for (var i = 0, matchesLength = matches.length; i < matchesLength; i++) { 
    matches[i] = matches[i].replace(/\D/g, ''); 
}; 

console.log(matches); 
// ["1", "9", "4", "3", "15", "4", "3", "67", "1", "2", "32"] 

jsFiddle

+0

不,你不會錯過什麼,這是我的懶惰。我修改了它。 – 2011-02-24 06:23:26

+0

@彼得謝謝,希望這對你來說足夠優雅。 :) – alex 2011-02-24 06:24:50

+0

是的,是的。非常感謝,它的工作。如果我有足夠的代表投票你,我會的。 – 2011-02-24 06:37:07

1
var str = "1943[15]43[67]12[32]", 
    re = new RegExp(/(\d)|\[(\d+)\]/g), 
    out = [], 
    m; 

while (m = re.exec(str)) { 
    out.push(m[2] || m[0]); 
} 

console.log(out); // ["1", "9", "4", "3", "15", "4", "3", "67", "1", "2", "32"] 
+0

+1我也喜歡這個解決方案。任何你沒有使用'\ d'作爲第二個'|'的理由? – alex 2011-02-24 06:37:44

+0

我認爲不好的習慣:)我剛修好了它。 – 2011-02-24 06:42:18

+0

它根本沒有錯!只是好奇... – alex 2011-02-24 06:43:43