2012-05-18 42 views
0
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. 

任何人都可以请帮助?谢谢!

回答

2

您需要使用=〜操作与regexp进行比较。

+0

我尝试了不同的=〜的变化,但没有成功。 – Jim

+0

!〜是否定的正则表达式匹配。 – jordanm

0

这是你的正则表达式的问题 - 你需要躲避/

^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(\S*)$ 

这将验证您的测试网址正确

表达与每一个可能的URL测试为例