2012-01-06 16 views
0

0-5,000の値を入力できる正規表現が必要です。私は初心者であり、正規表現にはかなり新しいです。 ^(0?[0-4]?[0-9]?[0-9]?[0-9])$は私がこれまで持っていたものですが、私には4,999にしか許されません。ありがとうReg Ex数値範囲

+5

こんにちは、StackOverflowのへの歓迎。この正規表現で作業するために使用しているプログラミング言語についても言及してください。 – Animesh

+1

あなたが使用している言語についてのいくつかの文脈が確かに役に立つでしょう。あなたが正しい言語/プラットフォームを使用しているなら、実際の数値を意味するコントロールを使用し、正規表現を使用するのではなく、コントロール自体に最大/最小を設定することでこれを解決できます。 – Zannjaminderson

答えて

5

文字列のこの部分を数値として解析し、5000と正規表現の外で比較してみませんか?これに正規表現を使用すると、あなたのコードを読んでいる人は誰でもあなたを激しく憎むでしょう!

1
println '3,1777' ==~ /[0-4]((\,)\d{1,3})?/ 
println '3,999' ==~ /[0-4]((\,)\d{1,3})?/ 

これはGroovy用です。それでも、PCREをサポートする言語で正規表現を使用することができます=)

2

数値範囲の検証には正規表現を使用しないでください。正規表現を使用して、パターンと一致するようにします(つまり数字のみで構成されています)。文字列を数字に変換してその数字を検証します。

正規表現はゴールデンハンマーではなく、非常に多くの爪が効果的に使用できます。

0

^(5000|[1-4][0-9]{3}|[1-9][0-9]{2}|[1-9][0-9]|[0-9])$

2

イリヤ・コーガンの答えに従ってください。

あなたは本当にあなたが行うことができますしたい場合:

(5000|[1234]?\d{3})(?!\d)