2011-01-04 9 views
0

1.5で割り切れる数を除いた正規表現が必要です。これが可能なのかどうか分かりません。ASP.NET - 正規表現バリデータ

私はregexライブラリをチェックし、何も持っていません。誰にでもアイデアはありますか?

答えて

3

他の人が言ったように、正規表現は適切なツールではありません、それは次のようなのCustomValidatorを使用することをお勧めします:

<asp:CustomValidator ID="DivisibleByOnePointFiveValidator" runat="server" ErrorMessage="Must be divisible by 1.5!" 
    Display="Dynamic" ControlToValidate="MyTextBox" EnableClientScript="false" 
    OnServerValidate="DivisibleByOnePointFiveValidator_ServerValidate" > 
</asp:CustomValidator> 

    protected void DivisibleByOnePointFiveValidator_ServerValidate(object source, ServerValidateEventArgs args) 
    { 
     decimal inputValue; 
     if (!decimal.TryParse(args.Value, out inputValue)) 
     { 
      args.IsValid = false; 
      return; 
     } 

     args.IsValid = inputValue % 1.5M == 0; 
    } 
2

正規表現は文字列の検証であり、数字による検証ではありません(数字であるかどうかを示す以外に)。これにはカスタムバリデーターが必要です。

+0

展開するには... REは、入力が数であり、他のステップがすべきかどうかを検証する必要がありますそれが1.5で割り切れるかどうかを検証するので、2段階のプロセスになります。 – DerekH

+0

@DerekH:あなたの質問を更新して、入力が特定の許容フォーマット(数字の小数点以下、先行ゼロ、科学記法など)内の数値文字列であることを検証したいと言ってもいいでしょう。 – FrustratedWithFormsDesigner

+0

実際には私の質問ではなく、キースの答えを広げていた。私は指定すべきである! – DerekH

1

正規表現を使用して数値を検証することはお勧めできません。この目的のためだけに、小さなバリデータ関数を書く方が良いでしょう。

この正規表現では、数値/非数値を非常に簡単に検証することができます。[0-9]+もちろん、これは多くの先行ゼロを許容し、小数点以下を考慮しません。 [0-9]+(\.(0|[0-9]+))?のようにもっと洗練されたものにすることができます。そして、私たちは否定的な兆候、科学的記法、および他の表記形式にもさえ始めていません。許可された入力形式を指定すると、正規表現でもっと簡単に手助けすることができます。