-1

我有一个最多接受 7 个字符的文本框。如果在小数点之前和/或之后全为零,我需要确保不接受该值,但我无法弄清楚模式

例如 000、00.000、0.0000 等。

可以允许 0.001、0.1 等情况

已经尝试过 ^[0] 但这不允许单个零,或者不允许组合,例如 0.001

4

3 回答 3

0
[0.]*

将匹配空白、零和小数点。不完全符合您的要求,但可能适用于您的情况。

实际上,您可能想要匹配的不仅仅是零。

\d*[1-9]\d*(?:\.(?:\d*[1-9]+\d*)?)?|\d+\.\d*[1-9]+\d*

它将匹配小数点前的某个数字(至少一个非零)与可选的小数点和一些数字。或者,一些数字,一个小数,然后是一些数字(至少一个非零)。

于 2012-11-20T16:58:38.360 回答
0
^(?=.*[1-9])\d+(\.\d+)?$

此正则表达式将接受满足以下条件的字符串:

  • 字符串中必须有一个 1-9 的数字 -(?=.*[1-9])
  • 它必须以一位或多位数字开头 -\d+
  • 它可以选择以句点和一个或多个数字结尾 -(\.\d+)?

它将匹配这些字符串:

  • 42
  • 42.42

它不会匹配这些字符串:

  • 0
  • 0.0
  • 42.
  • .42

在这里查看它的实际应用。

于 2012-11-20T17:04:37.573 回答
0

正则表达式相当简单:

@"^(?![0.]*$)\d*\.?\d+$"

但是,正则表达式不是您应该使用的。如果您正在使用 ASP.NET WebForms,您应该使用 CompareValidator:

<asp:CompareValidator id="Compare1Validator1" runat="server" 
       ControlToValidate="TextBox1" 
       Operator="DataTypeCheck"
       Type="Double" />

<asp:CompareValidator id="Compare1Validator2" runat="server" 
       ControlToValidate="TextBox1" 
       Operator="NotEqual"
       Type="Double"
       ValueToCompare="0" />

如果您使用 C#,请使用double.TryParse和/或字符串函数:

var str = TextBox1.Text.Trim();
var textBoxValue;

if (!double.TryParse(str, out textBoxValue)) || textBoxValue == 0)
{
    throw new Exception("Input was not a properly-formatted, nonzero number.");
}
于 2012-11-20T17:35:02.803 回答