首页 > 解决方案 > 正则表达式匹配固定长度的逗号分隔列表?

问题描述

我有一个逗号分隔的列表,如下所示:

element1,element2,element3;element4,element5,element6,element7;element8,element9; 

每个元素可以是任何文本,但元素内不能有逗号。

我希望做的是,将元素列表与特定长度匹配。

例如,如果我输入 4,代码将匹配 4 个元素列表,它将输出element4,element5,element6,element7

如果我指定 2 ,它将输出element8,element9

这可能吗?

标签: javascriptregex

解决方案


你不需要正则表达式。

使用您的输入字符串,您可以使用 split() 和 find() 的组合来执行您想要的操作。例如:

function findInString(str, length) {
  return str
    .split(";") // split at semicolons
    .map(elem => elem.split(",")) // split at commas to make an Array of Arrays
    .find(arr => arr.length === length)  // Array length === input length
    .join(",") // make into a String again (if you want to)
}

但是,如果您想解决错误(例如要求负长度),则必须find在位中考虑这些错误,或者单独加入。例如:

function findInString(str, length) {
  const res = str
    .split(";")
    .map(elem => elem.split(","))
    .find(arr => arr.length === length) 

  if(res) {
    return res.join(",")
  } else {
    return ""
  }
}

推荐阅读