相反,JS preg匹配' for'环

时间:2015-08-28 21:14:19

标签: javascript regex

我们说我有一个字符串:

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

我希望获得多个数组:

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

有没有办法通过正则表达式创建多个数组避免FOR循环?

2 个答案:

答案 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,那将会更清楚,就像在另一个答案中一样。