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*)$