在应用程序中,我需要验证用户输入的字符串。
一个号码 要么 范围(两个数字用' - '分隔) 要么 逗号分隔数字和/或范围的列表 和 任何数字必须介于1和999999之间。
逗号之前和之后允许使用空格和' - '。
我认为以下正则表达式会这样做。
(\d{1,6}\040?(,|-)?\040?){1,}
这匹配以下(非常好)。 (正则表达式中的\040
是空格的字符。)
但是,我也得到了一个匹配:
我在这里缺少什么?
答案 0 :(得分:1)
答案 1 :(得分:0)
/\d*[-]?\d*/
我用perl测试了这个:
> cat temp
00001
12
20,21,22
100-200
1,2-9,11-12
20, 21, 22
100-200
1, 2-9, 11-12
> perl -lne 'push @a,/\d*[-]?\d*/g;END{print "@a"}' temp
00001 12 20 21 22 100-200 1 2-9 11-12 20 21 22 100-200 1 2-9 11-12
上面的结果显示将所有正则表达式匹配放在数组中并最终打印数组元素。