2016-11-10 95 views
4

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

能否请你指出什么是错我的上述正则表达式。

+2

'\ d {10}'只能匹配10位块。你是不是指'@“^ \ d {1,10}(,\ d {1,10})* $”'? –

回答

5

\d{10}子模式只能匹配10位块。

您需要允许1到10 {1,10}(或1多用+)与

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

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

注意使用不非捕获组(?:...)的存储子匹配,并且仅意味着分组子序列。

参见regex demo

编辑:为了允许匹配负值,添加可选-

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

参见another regex demo

+0

这样做一切都很好,除了它不允许负整数。根据它'2,14,124,-124,2'是无效输入,但是'2,14,124,124,2'是正确的。 – Maven

+0

只需将可选的连字符添加到模式' - ?'。 “?”量词匹配1或0次量化子模式。 –

相关问题