检查字符串是否包含非数字字符

sae*_*dan 6 bash grep

如何检查给定字符串是否包含非数字字符,示例:

x11z returns > 0
x$1 also returns > 0
1111~ also returns > 0
Run Code Online (Sandbox Code Playgroud)

我的意思是说不是之间的一切0-9.我看到类似的线程,但没有他们谈论"非0-9",除了他们显示它a-zA-Z.

tar*_*lah 8

只需使用bash模式匹配:

[[ "$MY_VAR" =~ ^[^0-9]+$ ]] && echo "no digit in $MY_VAR"
Run Code Online (Sandbox Code Playgroud)


squ*_*guy 7

只需使用否定的字符类:

grep [^0-9]
Run Code Online (Sandbox Code Playgroud)

这将匹配任何非数字字符,而不是仅由数字组成的字符串.