以下regexp接受所有正实数(不包括0)
^(?!0*(\.0+)?$)(\d+|\d*\.\d+)$
它有效,例如在JavaScript中。 bash使用operator =〜进行测试的正确方法是使用与正则表达式一致的变量(例如,必须使用反斜杠对字符进行转义)。
Bash版本是4.4.12。
答案 0 :(得分:0)
这样的事情应该做:
if [[ $v =~ ^([0-9]+|([0-9]*[.][0-9]+))$ ]] && ! [[ $v =~ ^(0*(\.0+))$ ]]; then
echo "Match"
fi