6

我需要一个 .Net (C#) 正则表达式来匹配逗号分隔的数字列表,如果最后一个字符有逗号,则该列表将不匹配

123,123,123,123 true - correct match
123,123,123,123, false - comma on end 
123,123,123,,123 false - double comma
,123,123,123,123 false - comma at start
"" false - empty string

123 true - single value

我找到了这个正则表达式,但最后有逗号时匹配^([0-9]+,?)+$

适合这种模式的正则表达式模式是什么?

编辑:为清楚起见添加了 1 个示例,正确答案适用于123

4

3 回答 3

14

尝试使用这种模式:

^([0-9]+,)*[0-9]+$

你可以在这里测试它。

于 2013-07-19T03:52:47.543 回答
3

尝试这个:

//This regex was provided before the question was edited to say that
//a single number is valid.
^((\d+\s*,\s*)+(\s*)(\d+))$

//In case a single number is valid
^(\d+)(\s*)(,\s*\d+)*$ 

以下是测试结果

 123,123,123,123    match
 123,123,123,123,   no match 
 123,123,123,,123   no match
 ,123,123,123,123   no match
 ""                 no match (empty string)
 123                no match for the first regex, match for the second one

正则表达式没有给我预期的结果

编辑:修改正则表达式以包含单个数字的最后一个大小写,不带任何逗号。

于 2013-07-19T03:55:16.403 回答
1

请试试这个

没有后缀/前缀逗号:[0-9]+(,[0-9]+)*

无前缀(可选后缀):[0-9]+(,[0-9]+)*,?

无后缀(可选前缀):,?[0-9]+(,[0-9])*

可选的后缀和前缀:,?[0-9]+(,[0-9]+)*,?

于 2013-07-19T05:39:55.443 回答