用正则表达式验证URL和带有文件扩展名的URL

本文关键字:URL 文件 扩展名 正则表达式 验证 | 更新日期: 2023-09-27 18:07:59

我有一个超链接控件的场景,用户可以提供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;
    }

用正则表达式验证URL和带有文件扩展名的URL

你真的需要一个正则表达式吗?在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类也将处理这个问题。

为了验证正确的文件扩展名,您可以使用String.EndsWith.

检查URL是否以某些字符串结束,例如"。png","。jpg"。