如何基于两个条件javascript正则表达式溢出字符串

问题描述 投票:0回答:2

我正在努力以一种干净的方式来拆分下面的变量

var x = "3/13/20,2179,5232,17660,3/14/20,2727,6391,21157,3/15/20,3499,7798,24747,3/16/20,4632,9942,27980"

上面的字符串用日期及其相关值分隔,split方法的结果应为这样的结果

arr[0] =  ['3/13/20','2179','5232','17660']
arr[1] =  ['3/14/20','2727','6391','21157']

寻找可以带来上述结果的正则表达式模式

我知道这些将不起作用,是否有任何内置功能可用于实现此功能

.split("/");
.split(",");
javascript regex google-visualization
2个回答
3
投票

用逗号分隔,后跟\d+\/(日期的开头),然后在每个项目上用逗号分隔:

var x = '3/13/20,2179,5232,17660,3/14/20,2727,6391,21157,3/15/20,3499,7798,24747,3/16/20,4632,9942,27980';

const arr = x
  .split(/,(?=\d+\/)/)
  .map(str => str.split(','));
console.log(arr);

1
投票

[您可以只输入map,然后是以下元素的索引-否定任何正则表达式...,它假定数据始终是一个日期,后跟三个值。例如

const x = "3/13/20,2179,5232,17660,3/14/20,2727,6391,21157,3/15/20,3499,7798,24747,3/16/20,4632,9942,27980";

const b = x.split(",")
    .map((e, i, a) => !(i % 4) && [e, a[i + 1], a[i + 2], a[i + 3]])
    .filter(Boolean);

console.log(b);
© www.soinside.com 2019 - 2024. All rights reserved.