bugfix> regex > 投稿

小数点以下0、1、または2桁の数値のみを有効にする必要がある正規表現を作成します。

だから私はそれをやろうとした: "^\\d+(\\.\\d){0,2}$" ただし、小数点以下3桁の数字でもtrueを返します。

何が間違っているのでしょうか?

回答 2 件
  • あなたの正規表現は、「いくつかの数字、それに続く0〜2回のドットの後に数字が続く」と言っています。間違いを見つけましたか? 3.1.4  一致しますが、 3.14  しません。質問で述べていることとは反対に、ポイントの後の3桁も一致しません。

    代わりに、小数部分がオプションであると仮定して、次のようなものが必要になります。

    \d+(\.\d{0,2})?
    
    

    または、選択した言語の文字列にアンカーしてエスケープします。

    "^\\d+(\\.\\d{0,2})$"
    
    

  • あなたの正規表現 ^\d+(\.\d){0,2}$   1 と一致  または 1.0  また、 1.0.0  グループ (\.\d){0,2} に対して0〜2回の数量詞を指定するため  ドットの後の3桁には一致しません。

    ドットとドットの後に1桁または2桁が続く可能性がある数字を照合するには、次のように使用できます。

    ^\d+(?:\.\d{1,2})?$  

    ここでは、最初の数字の後のグループはオプションです (?:\.\d{1,2})?  数字 \d{1,2} に数量詞が指定されている 。

あなたの答え