2016-05-24 33 views
1

次のことを行う正規表現を見つけようとしています。以下の両方の条件が満たされている必要があります。 1)0〜100を含む数字 2)1桁または2桁の小数点のみを含むことができますが、必須ではありません。それは100.01または100.1 100を許可してはならない2進数を含む0〜100の正規表現の範囲

は最大値であり、または

100.0または100.00私はthis question で私を助けた^(100(?:\.00)?|0(?:\.\d\d)?|\d?\d(?:\.\d\d)?)$ を試みたが、これは99.0(1小数点)を受け付けません。 私はおそらく非常に近いでしょう。あなただけの各二進数字をオプションにする必要が

答えて

2

^(?:100(?:\.00?)?|\d?\d(?:\.\d\d?)?)$ 
      ^    ^

updated regex demoを参照してください。 0(?:\.\d\d)?の代替品は、(Sebastian's commentのように)で覆われているため、削除することができます。

数値限定子は、定量化するサブパターンの1回または0回のオカレンスと一致します。

パターンはの詳細:

  • ^ - ストリング
  • (?:の開始 - 交代グループの開始:
    • 100(?:\.00?)? - 100100.0又は100.00.00はオプションであります最後0もオプション)
    • \d?\d(?:\.\d\d?)? - オプションの数字の後に必須の数字が続き、その後にドット、数字、およびというオプションの数字の後に、オプションの数字が続きます。
  • )
  • - 交替基
  • $の終わり - 文字列の末尾。
+1

'' \ d?\ d(?:\。\ d \ d?) 'で既に覆われていますか? –

+0

@SebastianProske:私は主な点に焦点を合わせました.2番目の小数点はオプションです。はい、そうです、それはカバーされています。 –