Bash URL与正则表达式的比较

Bash URL与正则表达式的比较,bash,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 ech

我测试我的脚本-但它仍然说它是无效的

我试图修改代码:

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
}

有人能帮忙吗?谢谢

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

问题出在正则表达式上-您需要转义
/

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.  
这将正确验证您的测试url

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

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