以下の式を使用して、10進数のテキストボックスを検証しています。ただし、12、-1.0、12.0、12.5、1.0などを受け入れます。ただし、この「12.4」のような正規表現が必要です。最初の2桁と小数点、その後に1桁。
ValidationExpression="^-?[0-9]{0,2}(\.[0-5]{1,1})?$|^-?(100)(\.[0]{1,2})?$"
まず第一に、その正規表現は非常に複雑です。全体を次のように書き直すことができます
^-?([0-9]{0,2}(\.[0-5])?|100(\.00?)?)$
...そしてまったく同じ効果があります。しかし、あなたのコメントに基づいて、あなたはもっと厳密な何かを探しています:
^[0-9]{2}\.5$
なぜあなたがそれをしたいのかはっきりしていませんが、これはあなたが説明したことを正確に行います。最後の桁を強制的に5にしたくない場合(コメントが不明確だった場合)は、を使用します^[0-9]{2}\.[0-9]$
。
このコードはASPXページで使用できます。^[1-9]\d*(\.\d+)?$
ValidationExpressionプロパティで使用します。
<asp:TextBox runat="server" ID="txtprice" width="50" />
<asp:RegularExpressionValidator runat="server" ErrorMessage="Decimal Only" ControlToValidate="txtprice"
ValidationExpression="^[1-9]\d*(\.\d+)?$"></asp:RegularExpressionValidator>
expr = `@"^\d{1,2}\.\d$"`;
文字列の先頭-2桁-小数点-1桁。マイナスも整数もありません。それはあなたが望むものですか?
小数点の前に2桁、小数点の後に1桁が必要な場合は、これを試してください
-?[1-9][0-9][\.][0-9]
以下の式をWPFでテストしました。これを確認すると、正常に機能します。
string sExpression = @"^[0-9][0-9]\.[0-9]$";