文字列にアルファベット文字、アルファベット文字、数字が含まれているかどうかを確認するには?

文字列にアルファベット文字、アルファベット文字、数字が含まれているかどうかを確認するには?

STRに文字(az)(AZ)が含まれているか、文字と数字が含まれているかをテストしたいです。

その間、私はこれを持っています。

[[ "$STR"  =~ [a-zA-Z0-9] ]] && echo "contain alphanumerics"

ただし、STRに数字しかない場合にも機能します。

そして、STRに文字または文字と数字が含まれている場合にのみ印刷したいと思います。」

はい

次の場合に印刷されます

gstfg523
HGFER34
JNF
GFGTVT
83bfF

印刷されない

2424
4356
632
@65$
&%^$
82472243(*

ベストアンサー1

この例で確認したい$STRこと

  • 完全英数字(文字と数字のみ)、そして
  • 全体が数字(少なくとも1文字)で構成されていませんか?

次の条件を実装します。

[[ "$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

おすすめ記事