我有一个最多可接受7个字符的文本框。如果在小数点之前和/或之后全部为零,我需要确保该值不被接受,但我无法弄清楚模式
例如000,00.000,0.0000等。
可以允许0.001,0.1等情况
已经尝试了^ [0]但是这不允许单个零,或者不允许组合如0.001
答案 0 :(得分:0)
[0.]*
将匹配空白,零和小数点。不完全是你要求的,但可能适用于你的情况。
实际上你可能想要匹配不仅仅是零的东西。
\d*[1-9]\d*(?:\.(?:\d*[1-9]+\d*)?)?|\d+\.\d*[1-9]+\d*
它将匹配十进制之前的一些数字(至少一个非零)与可选的小数和一些数字。或者,一些数字,一个小数,然后是一些数字(至少一个非零)。
答案 1 :(得分:0)
^(?=.*[1-9])\d+(\.\d+)?$
此正则表达式将接受符合以下条件的字符串:
(?=.*[1-9])
\d+
(\.\d+)?
它将匹配这些字符串:
42
42.42
它与这些字符串不匹配:
0
0.0
42.
.42
答案 2 :(得分: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.");
}