特定の文字列がhttp
/https
で始まり、jpg
/jpeg
で終わるかどうかを確認するにはどうすればよいですか?言い換えれば
は、私は以下のことを確認したい:
- 文字列で始まる:
http
またはhttps
- 文字列がで終わる:
jpg
jpeg
JPG
`JPEG
私の試み:
をif [[ $1 = http?(s)://*.jpg ]]; then
echo "invalid URL"
fi
特定の文字列がhttp
/https
で始まり、jpg
/jpeg
で終わるかどうかを確認するにはどうすればよいですか?言い換えれば
は、私は以下のことを確認したい:
http
またはhttps
jpg
jpeg
JPG
`JPEG私の試み:
をif [[ $1 = http?(s)://*.jpg ]]; then
echo "invalid URL"
fi
:
[[ ${1,,} =~ ^https?://.+\.jpe?g$ ]]
${1,,}
は$1
は、開始時にhttp://
またはhttps://
を持っており、それがjpg
またはjpeg
$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
古いバージョン。新しいバージョンでは、[[ ... ]]
内のパターンを拡張パターンとして自動的に扱います。
ありがとう、うまくいきました。どのようにJPGとJPEGをキーセンシティブにチェックすることができますか? –
更新された回答を確認してください。 – anubhava