Javascript 是否允许使用正则表达式设置一位数和两位数的范围?

Javascript 是否允许使用正则表达式设置一位数和两位数的范围?,javascript,regex,validation,range,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*,?)+$”我想你需要这个:

对于下面的正则表达式模式,下面的数字范围是匹配还是不匹配,这与预期的一样好。我唯一的问题是当我的范围为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*,?)+$”

我想你需要这个:

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

输入

输出

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`

当我测试它的时候。请澄清您正在测试的确切字符串。可能是\\-导致问题的\\-无效。您可以将其写成var patt1=/^(\s*\d+\s*\-\s*\d+\s*,?|\s*\d+\s*,?)+$/;你的模式也适用于我使用“2-10”。正如/^(\s*\d+\s*-\s*\d+\s*,?|\s*\d+\s*,?)+$/和/^(\s*\d+\s*-\s*\d+\s*,?|\s*\d+\s*,?)+$/@GregL是的,您是对的,模式应该可以工作,我发现了另一个问题,我正在检查两个字符串值“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`