为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2021-09-30 13:40:16
我有一个逗号分隔的列表,如下所示:element1,element2,element3;element4,element5,element6,element7;element8,element9;每个元素可以是任何文本,但元素中不能有逗号。我希望做的是,匹配具有特定长度的元素列表。例如,如果我输入 4,代码将匹配 4 个元素列表,它将输出element4,element5,element6,element7。如果我指定 2 ,它将输出element8,element9。这可能吗?
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

为此,您不需要正则表达式。


使用您的输入字符串,您可以只使用 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 ""

  }

}


查看完整回答
反对 回复 2021-09-30
?
holdtom

TA贡献1805条经验 获得超10个赞

这个正则表达式应该可以工作。数字 2 是您要搜索的“,”的数量。

(;|^)(\w*)((,\w*){2});

您可以通过直观和自学的方式在regex101上评估 Regex 。


查看完整回答
反对 回复 2021-09-30
  • 2 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信