首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex数保留

Regex数保留
EN

Stack Overflow用户
提问于 2015-05-10 13:54:28
回答 1查看 59关注 0票数 0

下午好,我正在创建一个带有数字预约字段的表单,供用户选择。我所使用的系统只允许按号码编号,例如:1,2,3,它将预订号码1、2和3。

现在,我想添加一个选项,一次预订几个数字,例如:1-5,9,10,在本例中,它将预订编号1到5、9和10。

我正在使用下面的regex代码,但它不像我想的那样工作

代码语言:javascript
运行
复制
^\d{1,5}(?:-\d{1,5})*(?:,\d{1,5})*(?:,\d{1,5}-\d{1,5})*(?:-\d{1,5},\d{1,5})*$

这段代码的问题是,每当用户插入两个1-3,4-6时,它只允许多一个号码。例如,1-3,4-6,2,3在插入,3时显示错误。

还有一个问题,它允许在没有逗号示例1-3-6-8-9的情况下编写几个破折号。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-10 14:02:36

也许是这样的:

代码语言:javascript
运行
复制
\A\d{1,5}(?:-\d{1,5})?(?:,\d{1,5}(?:-\d{1,5})?)*\z

这个想法是:

  • 范围是可选的(?:-\d{1,5})? (在第一个数字后面)
  • 包含逗号后面跟着数字或范围的组可以发生0次或多次。

请注意,正则表达式无法解决问题,因为6-41-5,2,3,4总是可能的。因此,你迟早需要爆炸字符串,并检查数字和范围是否是一致的。

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

https://stackoverflow.com/questions/30152240

复制
相关文章

相似问题

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