regexp='^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?!\S+http:\/\/)(?:\S*)$'
fURL()
{
echo -n "Enter the YouTube URL to download: "
read URL
if [ "$URL" != "$regexp" ]; then
echo "${red}Invalid YouTube URL!${normal}"
fURL;
fi
}
我使用http://www.youtube.com/watch?v=tfTWHbtv_-Y测试我的脚本 - 但它仍然说它无效。
我尝试修改代码:
echo $URL | grep "^http:\/\/(?:www\.)?youtube.com\/watch\?(?=[^?]*v=\w+)(?:[^\s?]+)?$"
if [ $? -ne "0" ]; then
echo "${red}Invalid YouTube URL!${normal}"
fURL;
else
echo URL is good.
有人可以帮忙吗?谢谢!
答案 0 :(得分:2)
你需要使用=〜操作来比较regexp。
答案 1 :(得分:0)
这是你的正则表达式问题 - 你需要逃避/
:
^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(\S*)$
这将正确验证您的测试网址
表达式是未使用每个可能的URL进行测试的示例