用正则表达式验证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;
}
你真的需要一个正则表达式吗?在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.