正则表达式验证器未按预期工作

时间:2014-08-04 07:32:49

标签: c# regex

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

validate.ValidationExpression = @"^[1-9]\d*(,\d+)?$";

123,01; 0,01; 0.001; 123456789,01这些是我想要允许的数字

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

这个怎么样:

^\d+(,\d+)?$

视觉说明: http://www.regexper.com/#%5E%5Cd%2B(%2C%5Cd%2B)%3F%24 那会:

  • ^ 从一行的开头
  • 开始
  • \ d + 查找至少一个但数字尽可能多的数字
  • 组的开始
  • 小数点
  • \ d + 查找至少一个但数字尽可能多的数字
  • 小组结尾
  • 使整个论坛成为可选
  • $ 行尾

这应该捕获整数和十进制数字。 在这里尝试一下: http://regexr.com/398q6

答案 1 :(得分:0)

那应该做的工作

^[-+]?[0-9]*,?[0-9]+$

它验证了所有示例,它支持负数和数字,没有任何浮动部分。

答案 2 :(得分:0)

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

validate.ValidationExpression = @"^[0-9]\d*(,\d+)?$";

因为您基本上说1-9后跟,0-9的任何数字都很好,因此它不会选择0之前的, }}

答案 3 :(得分:0)

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

这将接受90和90,000