我需要一个正则表达式匹配数字列表和另一个匹配数字范围(表达式在这两种情况下都不会失败).范围应由数字,短划线和另一个数字(NN)组成,而列表应由逗号(N,N,N)分隔的数字组成.以下是一些例子.
范围:
'1-10' => OK
Whateverelse => NOK (e.g. '1-10 11-20')
Run Code Online (Sandbox Code Playgroud)
列表:
'1,2,3' => OK
Whateverelse => NOK
Run Code Online (Sandbox Code Playgroud)
这是我的两个正则表达式:
...但我有一些问题...例如:
在评估时'1-10',regex 2匹配1......但它不应该匹配任何东西,因为字符串不包含列表.
然后,在评估时'1-10 11-14',正则表达式1匹配1-10...但它不应该匹配任何东西,因为字符串包含的不仅仅是一个范围.
我错过了什么?谢谢.
试试这个:
^((\d+-(\*|\d+))|((\*|\d+)-\d+)|((\d)(,\d)+))$
Run Code Online (Sandbox Code Playgroud)
检测结果:
1-10 OK
1,2,3 OK
1-* OK
*-10 OK
1,2,3 1-10 NOK
1,2,3 2,3,4 NOK
*-* NOK
Run Code Online (Sandbox Code Playgroud)
正则表达式的可视化:

编辑:*根据OP的评论为通配符添加.