如何我可以检查是否给定的字符串包含非数字字符,例:检查字符串包含非数字字符
x11z returns > 0
x$1 also returns > 0
1111~ also returns > 0
通过角色,我的意思是一切不0-9
之间。我看到类似的线索,但他们没有谈到“非0-9”,除非他们显示其a-z
或A-Z
。
如何我可以检查是否给定的字符串包含非数字字符,例:检查字符串包含非数字字符
x11z returns > 0
x$1 also returns > 0
1111~ also returns > 0
通过角色,我的意思是一切不0-9
之间。我看到类似的线索,但他们没有谈到“非0-9”,除非他们显示其a-z
或A-Z
。
只需用一个否定的字符类:
grep [^0-9]
这将匹配任何非数字字符,而不是只有数字组成的字符串。
事情是这样的:
if [[ "xf44wd" =~ [0-9]+ ]]; then
echo "contains $?"
else
echo "does no contains $?"
fi
或
if [[ ! "xf44wd" =~ [0-9]+ ]]; then
echo "does not contains $?"
else
echo "contains $?"
fi
另一种选择,一个bash “遏制” 检查
[[ "xf4fgh" = *[^0-9]* ]]
echo $?
0
[[ "1234" = *[^0-9]* ]]
echo $?
1
如果第一个字符是数字,但在字符串中找不到错误,那么这些建议中的大多数都返回true。如果整个字符串为数字,则以下函数返回true;如果在字符串中检测到任何非数字,则返回false。
function isdigit() {
[ $# -eq 1 ] || return 1;
[[ $1 = *[^0-9]* ]] && return 1
return 0
}
然后你可以使用类似'if isdigit $ 1;然后回声“是数字”;其他回声“nop”; fi' – elysch
我们可以使用一个字符类'':digit:]'吗? – tarabyte