2012-05-18 60 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測試爲例