2009-03-25 7 views
11

私はStackOverflowの新機能ですので、次の質問をするより良い方法がある場合はお知らせください。RegEx数値チェック

データベースのフィールドが数値かどうかを検出する正規表現を作成する必要があります。数字の場合は有効な範囲(1〜50)になります。私は[1-50]を試しました.1桁の数字の前に0(つまり06)がある場合を除いて動作します。 06は後でそれを数値に変換できるので、有効な数値と見なす必要があります。

本当にありがとうございます。私は正規表現についてもっと学びたいと思っており、私ができることをすべて学んでいます:www.regular-expressions.info。もし皆さんがこのサイトで他のサイトを推奨したら、私はそれを感謝します!

+0

重複:http://stackoverflow.com/questions/676467/how-to-match-numbers-between-x- and-y-with-regexp –

+1

私はそれを複製と呼ぶことはしません。これは他の問題の特別なケースであり、ずっと簡単です。 –

+0

この関連する質問は参考になるかもしれません:[XとYの間の数字の正規表現との一致方法](http://stackoverflow.com/questions/676467/) – Tomalak

答えて

16

この正規表現のアイデアは例

  • 0にダウン問題を破るためにあるこの

    ^(0?[1-9])|([1-4][0-9])|(50)$ 
    

    を試してみてください?[1-9]オプションを可能に一桁の場合の世話をします先行0

  • [1-4] [0-9]これも一桁
  • 50に先行0 allwows 50
  • の世話を49に10からすべての数字の世話をします
+0

@ybo、そうです。しかし、彼らは06が欲しいと言ったので、00も有効であると思った。 – JaredPar

+0

@Jared、私はあなたの編集後に私のコメントを削除しましたが、私はまだ彼は1と50の間の値が必要であることを理解しています。0と00を除外する必要があります。 – ybo

+0

@ybo、あなたは正しいです。私は0 – JaredPar

5

正規表現は、数字ではなく文字(この場合は数字)で動作します。数字ではありません。パターン内の各桁数ごとに別々のパターンを持つ必要があります。 (OR演算子)は他の答えと同様に示唆しています。ただし、テキストが正規表現(たとえば[0-9]+)で数値であるかどうかを確認してから、整数に変換して整数が範囲内にあるかどうかをチェックすることを検討してください。

2

正規表現で範囲チェックを簡単に行うことはできません。いくつかの作業で、数値範囲を認識するパターンを作成することはできますが、通常はかなり複雑で、わずかに異なる範囲では変更するのが難しくなります。

これを2つの部分に分割する方がよいでしょう。

  1. 数字パターン(^\d+$)を認識します。

  2. アプリケーションプログラムでその数値の範囲を確認してください。

0

^0 [1-50] {1,2} $

関連する問題