jan*_*ngo 3 bash shell-script regular-expression
我想测试 STR 包含字母为 (az) (AZ) 或字母与数字
同时我有这个
[[ "$STR" =~ [a-zA-Z0-9] ]] && echo "contain alphanumerics"
Run Code Online (Sandbox Code Playgroud)
但这即使STR只有数字也有效
而我们只想在 STR 包含字母或字母和数字时打印”
例子
将在以下情况下打印
gstfg523
HGFER34
JNF
GFGTVT
83bfF
Run Code Online (Sandbox Code Playgroud)
不会打印
2424
4356
632
@65$
&%^$
82472243(*
Run Code Online (Sandbox Code Playgroud)
对于至少有一个 alpha 的 alnums,这将是:
[[ $STR =~ ^[[:alnum:]]*[[:alpha:]][[:alnum:]]*$ ]]
Run Code Online (Sandbox Code Playgroud)
(请注意,与@ilkkachu 的回答相反,这也排除了空字符串)。
或者POSIXly:
valid() case $1 in
(*[![:alnum:]]*) false;;
(*[[:alpha:]]*) true;;
(*) false;;
esac
valid "$STR" || printf >&2 '"%s" is not valid\n' "$STR"
Run Code Online (Sandbox Code Playgroud)