网站开发eq编辑器,建设网站准备资料,各种网址大全,怎么做百度网站验证码咨询区 kenchilada#xff1a;我发现 framework 里有两个验证url有效性的方法#xff1a;Uri.IsWellFormedUriString 和 Uri.TryCreate #xff0c;我试了一下这两个方法在验证 文件路径 时都返回 true。请问我有什么有效的方法可以验证某个 string 是否为有效的 HTTP URL 格… 咨询区 kenchilada我发现 framework 里有两个验证url有效性的方法Uri.IsWellFormedUriString 和 Uri.TryCreate 我试了一下这两个方法在验证 文件路径 时都返回 true。请问我有什么有效的方法可以验证某个 string 是否为有效的 HTTP URL 格式呢回答区 Erçin Dedeoğlu可以用 Uri.TryCreate 实现为此我写了一个扩展方法。public static bool CheckURLValid(this string source){Uri uriResult;return Uri.TryCreate(source, UriKind.Absolute, out uriResult) uriResult.Scheme Uri.UriSchemeHttp;}然后像下面这样使用。string url htts://adasd.xc.;
if(url.CheckUrlValid())
{//valid process
}41686d6564我发现大家的答案都有两个问题。都允许 file://, ftp:// 开头的 url。如果url没有以 http:// https:// 开头则不能通过eg(google.com)所以这并不完美那如何解决呢下面是我优化后的方案。public static bool ValidHttpURL(string s, out Uri resultURI)
{if (!Regex.IsMatch(s, ^https?:\/\/, RegexOptions.IgnoreCase))s http:// s;if (Uri.TryCreate(s, UriKind.Absolute, out resultURI))return (resultURI.Scheme Uri.UriSchemeHttp || resultURI.Scheme Uri.UriSchemeHttps);return false;
}然后用下面的方式进行测试。string[] inputs new[] {https://www.google.com,http://www.google.com,www.google.com,google.com,javascript:alert(Hack me!)};
foreach (string s in inputs)
{Uri uriResult;bool result ValidHttpURL(s, out uriResult);Console.WriteLine(result \t uriResult?.AbsoluteUri);
}输出结果。True https://www.google.com/
True http://www.google.com/
True http://www.google.com/
True http://google.com/
False点评区 在用户表单验证中这种需求还是非常常见的 Uri.TryCreate 用来做服务器端验证是一个绝佳的方式。