2013-07-19 38 views
5

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

回答

12

尝试使用这种模式:

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

您可以测试它here

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

编辑:修改正则表达式,包括单号的最后情况下,没有任何逗号。

+0

工作在我的情况....感谢您的正确解决方案:) –

1

请试试这个

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

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

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

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

相关问题