2

Int32 番号の正規表現を作成しようとしています。-2,147,483,648 から 2,147,483,647 までの任意の数に一致する正規表現を書こうと思ったのですが、負の値から正の値までの範囲の式の書き方がわかりません..

何か案は ?

4

4 に答える 4

4

指定した範囲内の負の値と正の値を取得するには、次のようにします。

編集:数字は0から始めることができます(修正)、数字の範囲は-2147483648から2147483647で、-2147483647から2147483648ではありません(修正)

^(
-?\d{1,9}|
-?1\d{9}|
-?20\d{8}|
-?21[0-3]\d{7}|
-?214[0-6]\d{6}|
-?2147[0-3]\d{5}|
-?21474[0-7]\d{4}|
-?214748[012]\d{4}|
-?2147483[0-5]\d{3}|
-?21474836[0-3]\d{2}|
214748364[0-7]|
-214748364[0-8]
)$

行ごとにコメントする:

^(                  //start of line, or it will match part of the number and not the whole one
-?\d{1,9}|          //get any number with 9 digits
-?1\d{9}|           //get any number with 10 digits starting with 1
-?20\d{8}|          //get any number with 10 digits starting with 20
-?21[0-3]\d{7}|     //get any number with 10 digits starting with 21
                    //         (and the third digit in the range 0-3)
-?214[0-6]\d{6}|    //I think from now on it is understood
-?2147[0-3]\d{5}|
-?21474[0-7]\d{4}|
-?214748[012]\d{4}|
-?2147483[0-5]\d{3}|
-?21474836[0-3]\d{2}|
214748364[0-7]|     //max corner case
-214748364[0-8]     //min corner case
)$
于 2012-08-28T07:28:15.973 に答える
3

Int32.Parse(value)代わりに使用しないのはなぜですか。MinValue より小さい数値または MaxValue より大きい数値を表すOverflowException場合にキャッチできます。value

于 2012-08-28T07:27:23.413 に答える
0

それは本当に醜い正規表現です:

桁区切り記号 (カンマ) 付き: 1,234,567

実際に

^
  (
   -?
    (
     1(,\d\d\d){0,3}
    |2(,\d\d\d){0,2}
    |2,(0\d\d,\d\d\d,\d\d\d
       |1[0-3]\d,\d\d\d,\d\d\d
       |14[0-6],\d\d\d,\d\d\d
       |147,[0-3]\d\d,\d\d\d
       |147,4[0-7]\d,\d\d\d
       |147,48[0-2],\d\d\d
       |147,483,[0-5]\d\d
       |147,483,6[0-3]\d
       |147,483,64[0-7])
    |[1-9]\d{0,2}(,\d\d\d){0,2}
    )
  |0
  |-2,147,483,648
)$

桁区切りなし: 1234567

実際に

^
  (
   -?
    (
     1\d{0,9}
    |2(0\d{8}
      |1[0-3]\d{7}
      |14[0-6]\d{6}
      |147[0-3]\d{5}
      |1474[0-7]\d{4}
      |14748[0-2]\d{3}
      |147483[0-5]\d{2}
      |1474836[0-3]\d
      |14748364[0-7])
    |[1-9]\d{0,8}
    )
  |0
  |-2147483648
)$
于 2012-08-29T23:54:22.060 に答える
0

を使用して同じことができますasp:CompareValidator

<asp:TextBox ID="txtNumber" runat="server" /> 
<asp:CompareValidator ID="validator" runat="server" ControlToValidate="txtNumber" Operator="DataTypeCheck" Type="Double" ErrorMessage="Please enter only numeric values" /
于 2012-08-28T07:28:58.663 に答える