あなたの試み

あなたの試み

ユーザーにURLを入力するように求めたいのですが、URLには、、、、、、、、、、、、、、、、、のみを含めることがA-Zできます。a-z0-9&./=_-:?

たとえば、次のようになります。

Enter URL:
$ http://youtube.com/watch?v=1234df_AQ-x
That URL is allowed.

Enter URL:
$ https://unix.stackexchange.com/$FAKEurl%

ベストアンサー1

あなたは近いです。

URL に許可されている文字が 1 つ以上含まれているのではなく、許可されていない文字が 1 つ以上含まれていることを確認し、誤ったものとして報告しようとしています。

!(他のシェル^でも機能しますbash)を使用して、角かっこ式の文字セットを無効にすることができます。

とにかく、、、、などの範囲を使用して文字を明示的に個別にリストするのが正しいですa-z。 (熱い26+26+10文字のみ一致)A-Z0-9Cロケール他のロケールでは、他の何千もの文字と一致することも、複数の文字で構成されたソートされた要素(および間に並べられた要素など)Aと一致させることもできます。ZÉA-Z

case $URL in
  ("" | *[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_/\&?:.=-]*)
    echo >&2 "That URL is NOT allowed.";;
  (*)
    echo "That URL is allowed.";;
esac

おすすめ記事