用逗号分隔的整数的正则表达式

时间:2016-11-10 11:16:03

标签: c# regex

我需要Regex只允许用逗号2,-3,4分隔的整数(正数和负数),但逗号应该只在两个整数的中间,不是在开头或结尾或两个连续的逗号,如23,34,,4

目前我有这个:

Regex regex = new Regex(@"^\d{1,10}([,]\d{10})*$");
 if (!regex.IsMatch("123,34,2,34,234"))

但它似乎不匹配任何甚至拒绝有效输入的东西,如123,34,2,34,234

请指出我的上述正则表达式有什么问题。

1 个答案:

答案 0 :(得分:5)

\d{10}子模式仅匹配10位数的块。

您需要允许1到10的{1,10}(或1和更多+

@"^\d{1,10}(?:,\d{1,10})*$"

@"^\d+(?:,\d+)*$"

请注意使用不存储子匹配的非捕获组(?:...),并且仅用于对子模式序列进行分组。

请参阅regex demo

编辑:要允许匹配负值,请添加可选的-

@"^-?\d+(?:,-?\d+)*$"
   ^^       ^^  

请参阅another regex demo