不应该允许单个零或0。##

时间:2013-04-24 13:18:48

标签: c# regex winforms

如何在数字(Decimal may alow)文本框中限制单个零?文本框可以接受任何数字,但它不应该只接受零或“0。##”作为值。

例如:“900.55”,“200.00”有效但“0”和“0.105”无效。

我尝试了^[1-9]\d\.?\d[0-9]*但接受了“0”和“0。##”

6 个答案:

答案 0 :(得分:6)

你快到了。

^[1-9][0-9]*(\.[0-9]+)?$

输入必须

  • 以数字1-9
  • 开头
  • 后面跟着0-9
  • 的任何序列
  • 和可选:
    • 一个点后跟一个或多个0-9。

注意:

  1. 这也不允许3.。如果您不想这样做,请将最后一个+替换为*
  2. 您可以使用\d代替[0-9]。我使用后者与[1-9]保持一致并保持简单。

答案 1 :(得分:1)

我认为你很接近,但是在组中包含小数和后续数字可能更容易,并使整个组只允许这样一次:

^[1-9][0-9]*(\.\d*)?

此外,这是一个有用的网站,用于测试regular expressions

答案 2 :(得分:1)

我认为这样做会更简单:

float result;
return float.TryParse(textBox1.Text, out result) && result < 1;

答案 3 :(得分:0)

如果文本框只接受有效数字,并且您要声明的所有内容都是&gt;你真正需要的只是

^[1-9]

或者是否允许尾随前缀为零

^0*[1-9]

答案 4 :(得分:0)

您也可以使用否定前瞻来编写它:

^(?!0\b)\d+(\.\d*)?$

这有一个额外的好处,就是接受前面的0的数字,如022。

答案 5 :(得分:0)

我遇到了同样的情况并解决了这个问题。 尝试一下。

  

@“[^ 0] * [0-9]。\ d {2} $