Valid1: 2
valid2: 3-5
Valid3: 2,4-6
valid4: 2,4,5
valid5: 2-7,8-9
Valid4: 2,5-7,9-13,15,17-20
上面的所有表达式都应该在一个正则表达式中有效。 连字符左侧的数字应小于右侧。
答案 0 :(得分:1)
首先,正如上面提到的@MikeFHay所说,正则表达式并不是为了检查一个数字是否比另一个数字更大(因为你必须解析表达式)。如果我们忽略该要求 - 其余的可以通过以下正则表达式实现:
((\d\,(?=\d))|(\d\-(?=\d))|\d)+
Java中的:
"((\\d\\,(?=\\d))|(\\d\\-(?=\\d))|\\d)+"
说明:
此正则表达式使用前瞻来验证每个逗号或短划线前面和后面跟一个数字:(\d\,(?=\d))
,以便每个"子字符串"包含短划线/逗号的必须采用以下格式:数字,数字或数字。
当然,一个不包含逗号/破折号的数字也是有效的 - 因此or
的最右边只是\d
链接到 online demo