我有這個片段:
if [[ $1 =~ ^[ -]?[0-9] \.?[0-9]*$ ]]; then
echo 'version is good'
exit 0
else
exit 1
fi
問題是,該代碼段$1 =~ ^[ -]?[0-9] \.?[0-9]*$應該只驗證格式為number.number
目前這段代碼驗證輸入為
1
01
0.1
有沒有辦法讓代碼只接受格式化為0.1 / 0.3.2 / 0.1.141等的輸入?
提前致謝。
編輯:為了澄清這個問題,代碼應該只接受用點分隔的數字,比如軟體程式版本控制。
uj5u.com熱心網友回復:
我建議這個正則運算式: ^[0-9] (\.[0-9] ){1,2}$
uj5u.com熱心網友回復:
我建議不使用正則運算式:
[[ "0" == ?([ -]) ([0-9]). ([0-9.]) ]] && echo OK # Nothing
[[ "01" == ?([ -]) ([0-9]). ([0-9.]) ]] && echo OK # Nothing
[[ "0.1" == ?([ -]) ([0-9]). ([0-9.]) ]] && echo OK # OK
[[ "0.3.2" == ?([ -]) ([0-9]). ([0-9.]) ]] && echo OK # OK
[[ "0.1.141" == ?([ -]) ([0-9]). ([0-9.]) ]] && echo OK # OK
[[ "10.1.141" == ?([ -]) ([0-9]). ([0-9.]) ]] && echo OK # OK
為了澄清這個問題,代碼應該只接受用點分隔的數字,如軟體程式版本控制。
[[ "0" == ([0-9]). ([0-9.]) ]] && echo OK # Nothing
[[ "01" == ([0-9]). ([0-9.]) ]] && echo OK # Nothing
[[ "0.1" == ([0-9]). ([0-9.]) ]] && echo OK # OK
[[ "0.3.2" == ([0-9]). ([0-9.]) ]] && echo OK # OK
[[ "0.1.141" == ([0-9]). ([0-9.]) ]] && echo OK # OK
[[ "10.1.141" == ([0-9]). ([0-9.]) ]] && echo OK # OK
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/368377.html
上一篇:從bash檔案中獲取特定文本
