非负整数模式

非负整数模式

在 bash 中,我可以使用 Posix 字符类,例如

digit="[[:digit:]]"

还有

[[:alnum:]], [[:alpha:]], [[:ascii:]], [[:punct:]]

我可以使用什么模式来匹配以 - 开头但不是负整数的内容?

我不能使用否定类[^[:digit:]](不是数字的字符),因为 -2345dsfg2546它不是负整数。

答案1

第一个字符是连字符,字符串的其余部分包含非数字:

if [[ $str == -* && ${str:1} == *[^[:digit:]]* ]]; then
  echo "str is not a negative integer
fi

更简单

if [[ $str == -*[^[:digit:]]* ]]; then

作为正则表达式

if [[ $str ~= ^-.*[^[:digit:]] ]]

相关内容