URL与正则表达式比较

时间:2012-05-18 13:41:11

标签: bash

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 个答案:

答案 0 :(得分:2)

你需要使用=〜操作来比较regexp。

答案 1 :(得分:0)

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

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

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

表达式是未使用每个可能的URL进行测试的示例