小数点以下の桁で数値を確認する

小数点以下の桁で数値を確認する

次のような表現があります。

echo “B1500.00” | egrep '^[(-|+)]?[0-9]+(\.[0-9]{2})?$'

小数点以下の桁数で数値を確認していますが、フィールドに数値以外の項目があるとエラーが発生したいと思います。

上記の表現には何の問題もないようです。 1500.00 や -1500.00 などの実際の数値がある場合、式は数値として返されます。私は何かを見逃していると確信しています。

答え1

egrepこれらの引用符は、一致させる式の一部として渡されるUnicode文字です。

また、最初の文字クラスが正確に欲しいものではないかもしれません。以下を試してください。

echo B1500.00 | egrep '^[-+]?[0-9]+(\.[0-9]{2})?$'

一致するものがなく、

echo 1500.00 | egrep '^[-+]?[0-9]+(\.[0-9]{2})?$'

一致1500.00

私が提供する文字クラスは正確に一致する+か、-同時に元の文字クラス|と開くかっこと閉じ括弧も一致します。私の考えでは、これはおそらくあなたが望むものではありません。

egrepCostasが指摘したように、次のようにライン全体を一致させ、開始アンカーと終了アンカーを無視したいことがわかります。

echo 1500.00 | egrep -x '[-+]?[0-9]+(\.[0-9]{2})?'

関連情報