首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用正则表达式验证分号分隔符的数值范围

使用正则表达式验证分号分隔符的数值范围
EN

Stack Overflow用户
提问于 2018-06-08 14:52:54
回答 1查看 83关注 0票数 1

我需要一个正则表达式来验证格式的字符串,使用Javascript

119,122,178-181,185,119,122,178-181,2,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185

我的Regexp https://regex101.com/r/nhFnKE/1

问题是,可能有"n - x“这样的范围。

0-1,2,3,4-7,8,9-20,21

非常感谢你的帮助

PS:空间管理和重复,我将在另一个实例中这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 15:00:23

您可以将重复的模式与一个或多个数字与可选部分匹配吗?,它匹配一个破折号和一个或多个数字,后面跟着逗号或行$的末尾。

^(?:\d+(?:-\d+)?(?:,|$))+$

或重复可选部分(?:\d+(?:-\d+)?,)* 0次或多次,包括逗号,并确保最后一次匹配为\d+(?:-\d+)?

^(?:\d+(?:-\d+)?,)*\d+(?:-\d+)?$

代码语言:javascript
运行
复制
const strings = [
  "119,122,178-181,185,119,122,178-181,2,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185",
  "0-1,2,3,4-7,8,9-20,21",
  "0-1,2,test"
];
let pattern = /^(?:\d+(?:-\d+)?,)*\d+(?:-\d+)?$/;

strings.forEach((s) => {
  console.log(pattern.test(s));
});

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50763290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档