下午好,我正在创建一个带有数字预约字段的表单,供用户选择。我所使用的系统只允许按号码编号,例如:1,2,3
,它将预订号码1、2和3。
现在,我想添加一个选项,一次预订几个数字,例如:1-5,9,10
,在本例中,它将预订编号1到5、9和10。
我正在使用下面的regex代码,但它不像我想的那样工作
^\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
的情况下编写几个破折号。
发布于 2015-05-10 14:02:36
也许是这样的:
\A\d{1,5}(?:-\d{1,5})?(?:,\d{1,5}(?:-\d{1,5})?)*\z
这个想法是:
(?:-\d{1,5})?
(在第一个数字后面)请注意,正则表达式无法解决问题,因为6-4
或1-5,2,3,4
总是可能的。因此,你迟早需要爆炸字符串,并检查数字和范围是否是一致的。
https://stackoverflow.com/questions/30152240
复制相似问题