猿问

正则表达式匹配具有固定长度的逗号分隔列表?

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

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

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

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

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

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

这可能吗?


开满天机
浏览 170回答 2
2回答

胡说叔叔

为此,您不需要正则表达式。使用您的输入字符串,您可以只使用 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 ""  }}

holdtom

这个正则表达式应该可以工作。数字 2 是您要搜索的“,”的数量。(;|^)(\w*)((,\w*){2});您可以通过直观和自学的方式在regex101上评估 Regex 。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答