price="1.11"
case $price in
''|*[!0-9]*) echo "It is not an integer.";
;;
esac
Output: It is not an integer
です。bashは、小数点を含む正の整数または正の整数のみを許可します。
上記のコードでは、正の整数のみを検証できます。
小数点を含む正の整数はどのように使用できますか?無駄
price="1.11"
case $price in
''|*[!0-9]*) echo "It is not an integer.";
;;
esac
Output: It is not an integer
です。bashは、小数点を含む正の整数または正の整数のみを許可します。
上記のコードでは、正の整数のみを検証できます。
小数点を含む正の整数はどのように使用できますか?無駄
はトリッキーである。この正規表現を試しにインターネットを介して検索されています。現在のパターンはと一致しません。 -integers。二bash
の拡張機能は、これはかなり簡単に:
使用延長パターン
shopt -s extglob
case $price in
# +([0-9]) - match one or more integer digits
# ?(.+([0-9])) - match an optional dot followed by zero or more digits
+([0-9]))?(.*([0-9]))) echo "It is an integer" ;;
*) echo "Not an integer"
esac
使用
if [[ $price =~ ^[0-9]+(.?[0-9]*)$ ]]; then
echo "It is an integer"
else
echo "Not an integer"
fi
は(理論的には、あなたが使用することができるはずの正規表現正規表現マッチングを行うPOSIXコマンド
expr
;私は問題を解決していますそれを動作させるには、POSIXの互換性を要件として指定していないので、私はそれについて心配するつもりはありません。 POSIXパターンマッチングは数字の任意の長さの文字列を一致させるのに十分強力ではありません)
あなただけの「decimalized」整数ではなく、任意の浮動小数点値を一致させたい場合は、それはもちろん簡単です:。
+([0-9])?(.)
[0-9]+\.?
'は!'、実際にそれが* *整数ではないことを意味します。 – chepner
おそらく重複するhttp://stackoverflow.com/questions/41970586/regex-start-of-string-anchor-not-working –
「小数点を含む整数」と言うときは、任意に整数が続きます停止するか、実際には「浮動小数点数」を意味しますか? – tripleee