我需要一个正则表达式来匹配数字列表,另一个用来匹配数字范围(两种情况下都不应失败)。范围应由一个数字、一个破折号和另一个数字(N-N)组成,而列表应由逗号分隔的数字(N,N,N)组成。以下是一些示例。
区间:
- 1-5 - 10-20 - 3-3
数字列表:
- 1,2,3 - 10,11,12,13 - 5
区间:
- 1-5 - 10-20 - 3-3
数字列表:
- 1,2,3 - 10,11,12,13 - 5
'1-10' => OK
Whateverelse => NOK (e.g. '1-10 11-20')
列表:
'1,2,3' => OK
Whateverelse => NOK
以下是我的两个正则表达式:
- [0-9]+[\-][0-9]+
- ([0-9]+,?)+
...但我在处理它们时遇到了一些问题,例如:
当对 '1-10'
进行匹配时,正则表达式 2 匹配到了 1
,但实际上该字符串并没有列表,所以它不应该匹配任何内容。
然后,当对 '1-10 11-14'
进行匹配时,正则表达式 1 匹配到了 1-10
,但实际上该字符串不仅包含范围,还包含其他内容,所以它也不应该匹配任何内容。
我是否漏掉了什么?谢谢。