正则表达式使用文件扩展名验证URL和URL

时间:2014-06-11 05:42:16

标签: c# regex url

我有一个超链接控件的场景,用户可以提供URL( http://:85 / UI / FormRenderer )或带有一些文件路径的URL( http:/ /:85/UI/FormRenderer/Content/images/Close.png )。我需要在给出URL时验证正确的URL,并且需要在提供文件路径时验证具有文件路径的正确URL。目前,我很清楚地区分URL和URL与文件路径。以下是我的尝试:

private static bool ValidateURL(string url)
    {
        bool stat = false;
        var matURL = Regex.Match(url, @"^(https?|ftp|file)://.+$");

        Match matFileType=null;
        if(matURL.Success)
            matFileType = Regex.Match(url, @"^.*\.(jpg|JPG|gif|GIF|doc|DOC|pdf|PDF)$");

        if (matFileType != null)
            stat = matFileType.Success;
        else
            stat = false;            
        return stat;
    }

1 个答案:

答案 0 :(得分:1)

你真的需要正则表达式吗?在C#中,您可以使用Uri类来验证一般的URL。例如,以下两个将起作用:

    new Uri("http://blahblah");
    new Uri("https://localhost");

这三个会抛出异常:

    new Uri("https://:80");
    new Uri("https:///example.com");
    new Uri("://example.com");

Uri课程将验证Uri是否是有效的Uri。在给定的Uri中是否存在文件是您必须编写代码的东西。它也不会被正则表达式覆盖。但是,如果您的问题是在为文件提供时根据规范检查Uri是否有效,那么Uri类也将处理它。

为了验证正确的文件扩展名,您可以检查网址是否以某些字符串结尾,例如" .png"," .jpg"使用String.EndsWith。