1

0から999999の範囲の値をチェックする正規表現があります。

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

問題は、0.00が有効であるということです。有効な最小量として0.01を設定したいと思います。したがって、0.00を入力すると無効になります。

私は正規表現の黒い芸術にひどいです。誰か助けてもらえますか?

ありがとう。

4

1 に答える 1

5

ロジックを正規表現に入れないでください。これらはパターンを照合するためのものであり、数値比較を行うためのものではありません。

Perlでは、これは次のようになります。

if ( $s =~ /^((?:\d{1,3},)?\d{1,3})(\.\d{2})$/ && ( $s > 0 ) ) {
    # acceptable number
}

正規表現を適切に使用すれば、正規表現はブラックアートではありません。それらを使用して数値計算を行おうとすると、それらが適切に使用されません。

于 2012-12-20T21:17:07.867 に答える