我们说我有一个字符串:
11-34-23|12-67|12-67-87-65
我希望获得多个数组:
[['11','34','23'],['12','67'],['12','67','87','65']]
有没有办法通过正则表达式创建多个数组避免FOR循环?
答案 0 :(得分:2)
如果您确定要通过管道拆分然后破折号,那么String.split将生成一个数组,并且Array.map将在每个部分上进行迭代。
例如:
"11-34-23|12-67|12-67-87-65"
.split('|')
.map(function(item) {
return item.split('-');
});
答案 1 :(得分: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
,那将会更清楚,就像在另一个答案中一样。