テストしたいSTR(a-z)(A-Z)のようなアルファベットまたは数字付きのアルファベットを含む
一方、私はこれを持っています
[[ "$STR" =~ [a-zA-Z0-9] ]] && echo "contain alphanumerics"
STRは数値のみです)
STRに英字または英字と数字が含まれている場合にのみ印刷する必要があります。 "
例
次の場合に印刷されます
gstfg523
HGFER34
JNF
GFGTVT
83bfF
印刷されません
2424
4356
632
@65$
&%^$
82472243(*
例から判断すると、あなたはそれを確認したいと思います$STR
は
それらの条件の実装:
[[ "$STR" =~ ^[[:alnum:]]*$ ]] && [[ ! "$STR" =~ ^[[:digit:]]+$ ]] && echo ok
これは空の文字列も受け入れます。これを変更するには、+
の代わりに *
最初のパターン。
テスト:
$ for STR in "" . .x .9 x x9 9 ; do
echo -en "$STR\t";
[[ "$STR" =~ ^[[:alnum:]]*$ ]] && [[ ! "$STR" =~ ^[[:digit:]]+$ ]] && echo ok || echo not ok ;
done
ok
. not ok
.x not ok
.9 not ok
x ok
x9 ok
9 not ok
少なくとも1つのアルファを持つアルナムの場合、それは次のようになります。
[[ $STR =~ ^[[:alnum:]]*[[:alpha:]][[:alnum:]]*$ ]]
( @ ilkkachuの回答 とは逆に、空の文字列も除外されることに注意してください)。
またはPOSIXly:
valid() case $1 in
(*[![:alnum:]]*) false;;
(*[[:alpha:]]*) true;;
(*) false;;
esac
valid "$STR" || printf >&2 '"%s" is not valid\n' "$STR"
数字だけでなく英数字の場合:
[[ "$STR" =~ ^[a-zA-Z0-9]+$ ]] && [[ ! "$STR" =~ ^[0-9]+$ ]] && echo …