我需要一个.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
答案 0 :(得分:14)
答案 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]+)*,?