2015-08-28 76 views
-3

比方說,我有一個字符串:JS預浸比賽,而不是「for」循環

11-34-23|12-67|12-67-87-65 

,我希望得到多個陣列,如:

[['11','34','23'],['12','67'],['12','67','87','65']] 

有沒有辦法通過創建多個陣列正則表達式避免FOR循環?

+0

否RegExp()調用輸出數組數組,因此您需要迭代,使用map,或任何其他方法。 – dandavis

回答

2

如果您確定您將通過管道分割然後破折,那麼String.split將生成一個數組,並且Array.map將在每個部分上進行迭代。

例如:

"11-34-23|12-67|12-67-87-65" 
    .split('|') 
    .map(function(item) { 
     return item.split('-'); 
    }); 
0

如果必須使用正則表達式,你可以使用g(全球)修飾符返回所有匹配的數組。

var result = "11-34-23|12-67|12-67-87-65".match(/[^|]+/g).map(function(item) { 
 
    return item.match(/[^-]+/g); 
 
}); 
 
alert(JSON.stringify(result));

第一個正則表達式,沒有在他們|所有字符串匹配,因此它使用的分隔符分割字符串了。第二個正則表達式應用於每個子字符串,並且匹配除-以外的任何內容,因此它使用該分隔符分割字符串。

但是,如果您只是使用split,則會更清楚,如在其他答案中。