最大7文字を受け入れるテキストボックスがあります。小数点以下および/または小数点以下がすべてゼロの場合、値が受け入れられないことを確認する必要がありますが、パターンがわかりません
例:000、00.000、0.0000など。
0.001、0.1などの場合は許可されます
^ [0]を試しましたが、これでは単一のゼロが許可されなかったか、0.001などの組み合わせが許可されませんでした
[0.]*
空白、ゼロ、および小数点に一致します。正確にはあなたが求めたものではありませんが、おそらくあなたの場合はうまくいくでしょう。
実際には、ゼロだけではないものと一致させたいと思うかもしれません。
\d*[1-9]\d*(?:\.(?:\d*[1-9]+\d*)?)?|\d+\.\d*[1-9]+\d*
これは、小数の前のいくつかの数値(少なくとも1つの非ゼロ)と、オプションの小数およびいくつかの数値と一致します。または、いくつかの数値、小数、次にいくつかの数値(少なくとも1つの非ゼロ)。
これの正規表現はかなり単純です:
@"^(?![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.");
}
^(?=.*[1-9])\d+(\.\d+)?$
この正規表現は、次の条件を満たす文字列を受け入れます。
(?=.*[1-9])
\d+
(\.\d+)?
次の文字列に一致します。
42
42.42
次の文字列には一致しません。
0
0.0
42.
.42