如何检查给定字符串是以http
/ https
开头,还是以jpg
/ jpeg
结尾?
换句话说,我想验证以下内容:
http
或https
jpg
jpeg
JPG
`JPEG 我的尝试:
if [[ $1 = http?(s)://*.jpg ]]; then
echo "invalid URL"
fi
答案 0 :(得分:3)
您可以使用此BASH正则表达式:
[[ ${1,,} =~ ^https?://.+\.jpe?g$ ]]
${1,,}
是将$1
转换为全部小写$1
是否在开始时有http://
或https://
,并以jpg
或jpeg
答案 1 :(得分:0)
你走在正确的轨道上。您可以设置nocasematch
选项以使其不区分大小写,并且您只需要在协议中检查可选e
的方式添加可选的s
到扩展名。
shopt -s nocasematch
shopt -s extglob # may not be necessary
if [[ $1 = http?(s)://*.jp?(e)g ]];
then
echo "invalid URL"
fi
较旧版本的bash
可能要求您使用shopt -s extglob
启用扩展模式匹配,以使用?(...)
内的[[
模式;较新的版本会自动将[[ ... ]]
内的模式视为扩展模式。