" SH" - URL验证

时间:2015-07-06 08:08:54

标签: shell validation url sh

有人可以帮我执行SH shell的URL验证(不是bash)吗?

尝试了以下一项......似乎行不通。

regex='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]'
string=$1
if echo "$1"|grep -q '$regex';then
    echo "Link valid"
else
    echo "Link not valid"
fi

2 个答案:

答案 0 :(得分:2)

我不认为您的正则表达式足够复杂,无法处理所有类型的有效网址,但忽略了这一点,您可以通过更改以下内容使其正常工作:

if echo "$1" | grep -Eq "$regex"; then
                     ^  ^

我已使用-E开关启用了扩展的正则表达式支持,并在变量周围使用了双引号,以便扩展它。

答案 1 :(得分:0)

将您的grep更改为:

grep -qP "$regex"

使用Perl正则表达式并启用变量扩展(双引号)。