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