[解決済み] 0より大きい数の正規表現?[クローズド]
質問
正規表現を使って数値が0より大きいかどうかをチェックする方法を探しています。
例えば
-
12
は真を返します -
0
は false を返します。
どのように解決するのですか?
MVCがどう関係するのかわかりませんが、IDが整数であれば、このBREでよいでしょう。
^[1-9][0-9]*$
整数ではなく実数(float)にマッチさせたい場合は、通常の10進数とともに、上記のようなケースを扱う必要があります(つまり
2.5
または
3.3̅
), パターンが 0 と 1 の間の場合 (すなわち
0.25
のように)、また、パターンの小数点以下が0である場合(例.
2.0
). さらに、整数の先頭のゼロのサポートも追加します (すなわち
005
):
^(0*[1-9][0-9]*(\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*)$
この2つ目はExtended REであることに注意してください。 同じことをBasic REで表現することもできますが、最近はほとんどすべてのものがEREを理解しています。 この式を消化しやすい部分に分解してみましょう。
^(
キャレットは行頭の NULL にマッチするので、正規表現の前にキャレットを置くと行頭に固定されます。開始括弧があるのは、下にある「or-bar」のためです。これについては後で説明します。
0*[1-9][0-9]*(\.[0-9]+)?
これは任意の整数
または
1 以上の浮動小数点数です。
2.0
はマッチングされますが
0.25
はマッチしません。 その
0*
は先頭のゼロを処理するので
005 == 5
.
|
パイプ文字は"です。 またはバー であり、この文脈では "です。 この式の評価では、パイプ文字は他のすべての文字よりも優先順位が高く、2 つの正規表現を効果的に結合します。括弧は、or-bar で区切られた複数の式をグループ化するために使用されます。
そして、2番目の部分です。
0+\.[0-9]*[1-9][0-9]*
これは、1つまたは複数の
0
文字で始まる数字にマッチします。
+
を
*
でゼロまたはそれ以上のゼロにマッチします。
.25
) の後にピリオドを置き、その後に少なくとも1つは
0
. つまり、これは上記のすべてにマッチします。
0
以下は
1
.
)$
そして最後に、括弧を閉じ、キャレットが行頭に固定されるように、ドル記号で正規表現を行末に固定します。
もちろん、プログラミング言語が何かを正規表現にマッチさせようとするのではなく、数値的に評価するようにすれば、頭痛の種である と
CPU を節約できます。
関連
-
[解決済み] .*?と.*の正規表現の違いは何ですか?
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] (grep) 非 ASCII 文字にマッチする正規表現ですか?
-
[解決済み] 郵便番号の正規表現
-
[解決済み] 単語を含まない行にマッチする正規表現
-
[解決済み] JavaScriptの正規表現でマッチしたグループにアクセスするにはどうすればよいですか?
-
[解決済み] \0-9]よりも効率が悪い
-
[解決済み] 有効な正規表現を検出するための正規表現はありますか?
-
[解決済み] JSで文字列が正規表現にマッチするかどうかをチェックする
-
[解決済み】MySQLで正規表現による置換を行うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】REエラー:Mac OS Xでの不正なバイトシーケンス
-
[解決済み] 正規表現でのコロン記号の使用
-
[解決済み] 正規表現で複数の単語を任意の順序で並べる [重複]。
-
[解決済み] 最初のマッチで停止する正規表現
-
[解決済み] R 文字列から最初の文字を削除する
-
[解決済み] Regexの複数マッチの部分文字列
-
[解決済み] Regexクレジットカード番号テスト
-
[解決済み] 正規表現ネガティブルックアヘッド
-
[解決済み] Grepの「Invalid range end」-バグか機能か?
-
[解決済み] TCL/EXPECTで$expect_outを使用して変数を割り当てるにはどうすればよいですか?