Regex匹配逗号分隔的列表,列表末尾没有逗号

本文关键字:列表 分隔 Regex | 更新日期: 2023-09-27 18:23:56

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

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

我找到了这个Regex,但当^([0-9]+,?)+$ 末尾有逗号时匹配

什么是Regex模式才能符合这种模式?

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

Regex匹配逗号分隔的列表,列表末尾没有逗号

尝试使用以下模式:

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

你可以在这里测试。

试试这个:

//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 dos';t给我预期的结果

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

请尝试此

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

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

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

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