正则表达式:匹配无结尾逗号的逗号分隔列表

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]+,?)+$ 请问有没有一个正则表达式模式可以匹配此模式? 编辑: 为了更清晰,我添加了一个示例。正确的答案可以匹配123
3个回答

14

尝试使用这个模式:

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

您可以在这里进行测试。


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

请查看正则表达式未能给出预期结果
编辑:修改了正则表达式,以包括没有逗号的单个数字情况。

1
请尝试以下内容:

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

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接