bugfix> regex > 投稿

書きたい正規表現は、 0.01 より大きいすべての数値と一致する必要があります小数点以下2桁まで。

すべての数値を小数点の最大2桁と一致させるために機能する正規表現は "^\\d+(?:\\.\\d{1,2})?$" です 。

私はインターネット上でいくつかの値より大きい正規表現について調査しましたが、同じように機能しない整数より大きい正規表現の例を見つけました。

助言がありますか?

回答 2 件
  • これがあなたの要求に完全に対応しているかどうかはわかりませんが、コメントできませんでしたが、先読みでゼロのマッチ相手をフィルタリングできると思います: (?!0+\.0+$)^\d+(?:\.\d{1,2})?$

  • 0.01 より大きい数値を一致させるには  小数点の後に最大2桁を使用すると、負の先読み (?! を使用できます  文字列の先頭で、オプションのドット . で1つ以上のゼロをアサートすることをアサートします  ゼロ部分は、ストリングの終わりまで、またはストリングが 0.01 で始まるまで発生しません 。

    ^(?!0+(?:\.0+)?$|0+\.01$)\d+(?:\.\d{1,2})?$

    これは、たとえば 0 とも一致しません 、 0.00.0000000000000  

    詳細

    ^  行頭の位置をアサート

    (?!  右側にあるものはそうではないと断言する負の先読み

    0+(?:\.0+)?$  ドットと1つ以上のゼロに一致するオプション部分で1つ以上のゼロに一致し、行の終わりをアサートします

    |  または

    0+\.01$  1つ以上のゼロに続いて.01に一致し、行の終わりをアサートします

    )  負の先読みを閉じる

    \d+  1つ以上の数字と一致

    (?:\.\d{1,2})?  ドットの後に1桁または2桁の数字が続くオプション部分

    $  行末の位置をアサート

あなたの答え