C# 正则表达式验证程序未按预期工作

C# 正则表达式验证程序未按预期工作,c#,regex,C#,Regex,已更新 我需要验证数字,小数点分隔符为,(逗号),但这不起作用: validate.ValidationExpression = @"^[1-9]\d*(,\d+)?$"; 123,01;0,01; 0,001; 123456789,01这些是我想允许的数字 任何帮助都将不胜感激。这应该可以完成这项工作 ^[-+]?[0-9]*,?[0-9]+$ 它验证您的所有示例,并支持负数和不带任何浮动部分的数字。 ^\d+(,\d+)?$ 视觉解释: 这将: ^从行首开始 \d+至少查找一个,但尽

已更新 我需要验证数字,小数点分隔符为,(逗号),但这不起作用:

validate.ValidationExpression = @"^[1-9]\d*(,\d+)?$";
123,01;0,01; 0,001; 123456789,01这些是我想允许的数字


任何帮助都将不胜感激。

这应该可以完成这项工作

^[-+]?[0-9]*,?[0-9]+$
它验证您的所有示例,并支持负数和不带任何浮动部分的数字。

^\d+(,\d+)?$
视觉解释: 这将:

  • ^从行首开始
  • \d+至少查找一个,但尽可能多的数字
  • 组的开始
  • 小数点
  • \d+至少查找一个,但尽可能多的数字
  • 小组结束
  • 使整个组成为可选组
  • $行尾
这应该可以捕获整数和十进制数。 在这里尝试一下:

如果您希望所有号码都被接受(
123,01;0,01;0001;123456789,01
),您必须将第一个数字1更改为0,如下所示:

validate.ValidationExpression = @"^[0-9]\d*(,\d+)?$";
由于您基本上是说任何数字
1-9
后跟
0-9
都可以,因此它不会选择
前面有
0
的数字

validate.ValidationExpression = @"^\d+[,]?\d*$";

这将接受90和90000,并提供一些样本输入。什么语言?@user3218114抱歉,我更新了,因为我还需要以0开头的数字。很抱歉,由于第一个数字类上有星号乘数,因此也会捕获
+,0
,123
。此外,小数点不需要转义。谢谢,我取消了对小数点的转义。至于
+、0
、123
它们在某些语言中是有效的。