2016-11-17 5 views
1

特定の文字列がhttp/httpsで始まり、jpg/jpegで終わるかどうかを確認するにはどうすればよいですか?言い換えれば

は、私は以下のことを確認したい:

  1. 文字列で始まる:httpまたはhttps
  2. 文字列がで終わる:jpgjpegJPG `JPEG

私の試み:

if [[ $1 = http?(s)://*.jpg ]]; then 
    echo "invalid URL" 
fi 

答えて

3
あなたはこのBASHの正規表現を使用することができます

[[ ${1,,} =~ ^https?://.+\.jpe?g$ ]] 
  • ${1,,}$1は、開始時にhttp://またはhttps://を持っており、それがjpgまたはjpeg
+0

ありがとう、うまくいきました。どのようにJPGとJPEGをキーセンシティブにチェックすることができますか? –

+0

更新された回答を確認してください。 – anubhava

0
で終わる場合 $1
  • すべて小文字
  • に正規表現のチェックを変換することです

    あなたは正しい軌道に乗っていました。 nocasematchオプションを設定することで、大文字と小文字を区別せずに、プロトコル内のオプションのsを確認したのと同じ方法で、オプションのeを拡張子に追加するだけで済みます。拡張パターン[[?(...)パターンを使用するshopt -s extglobとのマッチングを有効にする必要がありbash

    shopt -s nocasematch 
    shopt -s extglob # may not be necessary 
    if [[ $1 = http?(s)://*.jp?(e)g ]]; 
    then 
        echo "invalid URL" 
    fi 
    

    古いバージョン。新しいバージョンでは、[[ ... ]]内のパターンを拡張パターンとして自動的に扱います。

    関連する問題