c# - 以逗号分隔的整数的正则表达式

标签 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

这样的有效输入

能否请您指出我上面的正则表达式有什么问题。

最佳答案

\d{10} 子模式只匹配 10 位数字的 block 。

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

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

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

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

参见 regex demo

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

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

参见 another regex demo .

关于c# - 以逗号分隔的整数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40526253/

相关文章:

c# - 如果大于 C#

regex - Haskell无法编译正则表达式代码

c# - 不知道为什么我不能在 C# 中匹配这个正则表达式

c# - 如何更改导航栏标题而不考虑选项卡标题

c# - 释放 Button 对象时获取事件

c# - 选择行时修改 ListView 的行行为

java - 正则表达式动态忽略给定路径的某些部分

C# 保持方法执行/监听数据而不使用 While(true) 循环或 Thread.Sleep?

java - java中如何从字符串中过滤掉数字?

java - 如何在Eclipse中进行多行搜索?