如何我可以檢查是否給定的字符串包含非數字字符,例:檢查字符串包含非數字字符
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