我需要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
请指出我的上述正则表达式有什么问题。
答案 0 :(得分:5)
\d{10}
子模式仅匹配10位数的块。
您需要允许1到10的{1,10}
(或1和更多+
)
@"^\d{1,10}(?:,\d{1,10})*$"
或
@"^\d+(?:,\d+)*$"
请注意使用不存储子匹配的非捕获组(?:...)
,并且仅用于对子模式序列进行分组。
请参阅regex demo
编辑:要允许匹配负值,请添加可选的-
:
@"^-?\d+(?:,-?\d+)*$"
^^ ^^