使用正则表达式允许单位数和双位数范围?

时间:2016-03-16 05:49:34

标签: javascript regex validation range

使用以下正则表达式模式,以下数字范围匹配或不匹配,这是正常的预期。我遇到的唯一问题是当我的范围为2-10或8-12(单个数字到两位数)时,此模式不匹配

实施例

1场比赛

1-2比赛

-2不匹配

1,2-3,4,5-7匹配

1 2,3不匹配

1-2-2不匹配

10-15匹配

2-10不匹配 //这应匹配但不匹配以下模式

var patt1 = new RegExp("^(\\s*\\d+\\s*\\-\\s*\\d+\\s*,?|\\s*\\d+\\s*,?)+$");

1 个答案:

答案 0 :(得分:1)

我认为你需要这个:

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

Demo

输入

1
1-2
-2
1, 2-3, 4, 5-7
1 2, 3
1-2-2
10-15
2-10

输出

MATCH 1
1.  `1`
MATCH 2
1.  `1-2`
MATCH 3
1.  `1, 2-3, 4, 5-7`
MATCH 4
1.  `1-2-2`
MATCH 5
1.  `10-15`
MATCH 6
1.  `2-10`