下午好,我正在创建一个带有号码预订字段的表单供用户选择。我所拥有的系统只允许按号码预订号码,例如:1,2,3
,它会预订号码1,2和3.
现在我想添加一次预订多个数字的选项,例如:1-5,9,10
,在这种情况下,它会预订1到5,9和10的数字。
我使用以下正则表达式代码,但它无法正常工作
^\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
答案 0 :(得分:1)
也许是这样的:
\A\d{1,5}(?:-\d{1,5})?(?:,\d{1,5}(?:-\d{1,5})?)*\z
这个想法:
(?:-\d{1,5})?
(并且在第一个数字后面)请注意,正则表达式无法解决问题,因为始终可以使用6-4
或1-5,2,3,4
。因此,您迟早需要爆炸字符串并检查数字和范围是否一致。