Javascript 是否允许使用正则表达式设置一位数和两位数的范围?
对于下面的正则表达式模式,下面的数字范围是匹配还是不匹配,这与预期的一样好。我唯一的问题是当我的范围为2-10或8-12(一位数到两位数)时,该模式不匹配 例子 1场比赛 1-2比赛 -2不匹配 1,2-3,4,5-7的比赛 1、2、3不匹配 1-2-2不匹配 10比15的比赛 2-10不匹配//这应该是匹配的,但与下面的模式不匹配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*,?)+$”我想你需要这个:
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`