正则表达式匹配逗号分隔列表,最后没有逗号

时间:2013-07-19 03:50:39

标签: c# .net regex

我需要一个.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

3 个答案:

答案 0 :(得分:14)

尝试使用此模式:

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

您可以对其进行测试here

答案 1 :(得分: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

请参阅Regex doesn't give me expected result

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

答案 2 :(得分:1)

请试试这个

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

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

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

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