-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*

これは、小数の前のいくつかの数値(少なくとも1つの非ゼロ)と、オプションの小数およびいくつかの数値と一致します。または、いくつかの数値、小数、次にいくつかの数値(少なくとも1つの非ゼロ)。

于 2012-11-20T16:58:38.360 に答える
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 に答える
0
^(?=.*[1-9])\d+(\.\d+)?$

この正規表現は、次の条件を満たす文字列を受け入れます。

  • 文字列には 1 ~ 9 の数字が含まれている必要があります -(?=.*[1-9])
  • 1 つ以上の数字で始まる必要があります -\d+
  • オプションで、ピリオドと 1 つ以上の数字で終わる場合があります -(\.\d+)?

次の文字列に一致します。

  • 42
  • 42.42

次の文字列には一致しません。

  • 0
  • 0.0
  • 42.
  • .42

ここで実際に見てください。

于 2012-11-20T17:04:37.573 に答える