正则表达式,用于验证以逗号或短划线分隔的数字

时间:2012-11-07 12:40:04

标签: c# regex

它应该验证这样的东西

12,14,15,18-20,23,50-130

我想到了这个:

^(?:\\d[,] | \\d[-])$ // or ^(?:\\d[,] | \\d[-] *)$ ??

修改 它应该适用于

12,  15
11,13, 14,18, 51-52

它不适用于

w,12
12,15d
14,,18
14--20
12,12-
-12,13
,12
12,
13-,
-,13

2 个答案:

答案 0 :(得分:3)

首先,使用逐字符串来避免双反斜杠。然后这可能适合你:

@"^\s*\d+(?:-\d+)?\s*(?:,\s*\d+(?:-\d+)?\s*)*$"

这将是一个数字,可选地后跟连字符数字。然后是任意数量的,,空格和开始模式。

答案 1 :(得分:0)

你也可以尝试这个

@"^\s*\d+(\s*[,-]\s*\d+)*\s*$"