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
上面的所有表达式都应该在一个正则表达式中有效。连字符左边的数字应该比右手的小。
发布于 2013-10-28 17:24:10
首先,正如@MikeFHay上面所建议的,regex不是用来检查一个数字是否大于另一个数字(为此,您必须解析表达式)。如果我们忽略了这个要求--其余的可以通过以下正则表达式来实现:
((\d\,(?=\d))|(\d\-(?=\d))|\d)+
在Java中:
"((\\d\\,(?=\\d))|(\\d\\-(?=\\d))|\\d)+"
解释:
这个正则表达式使用展望来验证每个逗号或破折号前面有一个数字:(\d\,(?=\d))
,因此每个包含破折号/逗号的“子字符串”都必须是:位、数字或数字数字的格式。
当然,不包含逗号/破折号的数字也是有效的--因此,or
的最右边就是一个\d
链接到在线演示
https://stackoverflow.com/questions/19640841
复制相似问题