javascript - 正则表达式匹配固定长度的逗号分隔列表?
问题描述
我有一个逗号分隔的列表,如下所示:
element1,element2,element3;element4,element5,element6,element7;element8,element9;
每个元素可以是任何文本,但元素内不能有逗号。
我希望做的是,将元素列表与特定长度匹配。
例如,如果我输入 4,代码将匹配 4 个元素列表,它将输出element4,element5,element6,element7。
如果我指定 2 ,它将输出element8,element9。
这可能吗?
解决方案
你不需要正则表达式。
使用您的输入字符串,您可以使用 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 ""
}
}
推荐阅读
- javascript - 运行函数的函数 onclick 事件侦听器
- laravel - 在非新鲜的 laravel 中安装 laravel/ui 和 auth
- docker - docker 使用什么库在终端上呈现拉取/下载/提取信息
- google-calendar-api - 如何为自定义持续时间加载谷歌 ics 文件?
- java - 在链表的最后一个索引位置添加元素时面临的问题
- python - 我可以通过 CBV 创建用户实例而不是先创建表单吗?(姜戈)
- c# - 如何关闭程序
- javascript - jQuery ajax 不适用于加载窗口
- c# - 将多页 JSON 反序列化为单个对象?
- twilio - 挂机前播放音频