2016-05-17 4 views
2

私はasp.net mvc Webアプリケーションで作業していますが、SQLサーバーDecimal(19,2)の中に以下のデータ型の小数フィールドがあります。今私は、ユーザーが2桁だけを入力することができますチェックをしたいが、10、20(桁なし)などの番号を追加することができます..しかし、彼らは最大2桁があることを確認する数字を設定する場合。私のasp.net mvc内に[RegularExpression]が見つかりません。最大2桁の数字を許可します。

今私は、次の正規表現を試みるが、それらのどれもうまく働いていない: -

をこの正規表現は、ユーザーが数字を含まない数字を入力することはできません。 -

[RegularExpression(@"^\d+.\d{0,2}$", ErrorMessage = "Value can't have more than 2 decimal places")] 
public Nullable<decimal> CostPrice { get; set; } 

と、この正規表現,,ユーザーが数字を入力しようとすると、エラーが発生します: - ので、誰もが最高の正規表現が何であるかをadivceでき

[RegularExpression(@"^(\d{0,2})$", ErrorMessage = "error Message")] 
public Nullable<decimal> CostPrice { get; set; } 

、その力ユーザーが入力します最大2桁の数字を入力できます。

+0

digits do y小数点以下は? – etoisarobot

+0

@DoNothingはいちょうど小数点以下の桁 –

答えて

0

この正規表現は、次の操作を行います

^(?!\s*[0-9]{0,2}\s*$).*$ 

Regular expression visualization

説明:

  • が文字列の文字列の場合は空白
  • に囲まれ、最大で2桁の数字であることを検証します最大2桁の数字を含むと、式は偽になります
  • 文字列が2つの以上の数字が含まれている場合は
  • はその後、急行は、文字列は任意の文字が含まれている場合、その式が真

ライブ例

https://regex101.com/r/vQ1gW1/1

なります
  • trueになります

    説明

    NODE      EXPLANATION 
    ---------------------------------------------------------------------- 
    ^      the beginning of the string 
    ---------------------------------------------------------------------- 
        (?!      look ahead to see if there is not: 
    ---------------------------------------------------------------------- 
        \s*      whitespace (\n, \r, \t, \f, and " ") (0 
              or more times (matching the most amount 
              possible)) 
    ---------------------------------------------------------------------- 
        [0-9]{0,2}    any character of: '0' to '9' (between 0 
              and 2 times (matching the most amount 
              possible)) 
    ---------------------------------------------------------------------- 
        \s*      whitespace (\n, \r, \t, \f, and " ") (0 
              or more times (matching the most amount 
              possible)) 
    ---------------------------------------------------------------------- 
        $      before an optional \n, and the end of 
              the string 
    ---------------------------------------------------------------------- 
    )      end of look-ahead 
    ---------------------------------------------------------------------- 
        .*      any character except \n (0 or more times 
              (matching the most amount possible)) 
    ---------------------------------------------------------------------- 
        $      before an optional \n, and the end of the 
              string 
    ---------------------------------------------------------------------- 
    
  • +0

    でも、<< ^(?!\ s * [0-9] {0,2} \ s * $)。* $ >>は私が探している質問には関係しませんforは2小数以下を受け入れることになりますので、これらは私の場合10 OR 10.1 OR 1.23で有効であるはずですが、これらは有効ではありません10.123 OR 11.2345 ..私のポイントを得ましたか? –

    関連する問題