比方說,我有一個字符串:JS預浸比賽,而不是「for」循環
11-34-23|12-67|12-67-87-65
,我希望得到多個陣列,如:
[['11','34','23'],['12','67'],['12','67','87','65']]
有沒有辦法通過創建多個陣列正則表達式避免FOR循環?
比方說,我有一個字符串:JS預浸比賽,而不是「for」循環
11-34-23|12-67|12-67-87-65
,我希望得到多個陣列,如:
[['11','34','23'],['12','67'],['12','67','87','65']]
有沒有辦法通過創建多個陣列正則表達式避免FOR循環?
如果您確定您將通過管道分割然後破折,那麼String.split將生成一個數組,並且Array.map將在每個部分上進行迭代。
例如:
"11-34-23|12-67|12-67-87-65"
.split('|')
.map(function(item) {
return item.split('-');
});
如果必須使用正則表達式,你可以使用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
,則會更清楚,如在其他答案中。
否RegExp()調用輸出數組數組,因此您需要迭代,使用map,或任何其他方法。 – dandavis