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
它们在某些语言中是有效的。