我需要对以下网站网址返回 true 的检查: 我需要确保以 www 开头的网站。视为真实。 google.com 也应该返回 true。
www.google.com
google.com
http://google.com
http://www.google.com
https://google.com
https://www.google.com
我一直在使用
IsWellFormedUriString
,但没有取得任何进展。它不断返回 true。我也用过Uri.TryCreate
,但也无法让它工作。 Stack Overflow 上有很多关于这个主题的内容,但没有一个有效。我一定是做错了什么。
这是我的
ValidateUrl
功能:
public static bool ValidateUrl(string url)
{
try
{
if (url.Substring(0, 3) != "www." && url.Substring(0, 4) != "http" && url.Substring(0, 5) != "https")
{
url = "http://" + url;
}
if (Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute))
{
Uri strUri = new Uri(url);
return true;
}
else
{
return false;
}
}
catch (Exception exc)
{
throw exc;
}
}
我这样称呼它:
if (ValidateUrl(url) == false) {
validationErrors.Add(new Error()
{
fieldName = "url",
errorDescription = "Url is not in correct format."
});
}
它返回 true
htp:/google.com
。我知道这个网站上有很多关于这个主题的内容,但昨天我一整天都在努力让它发挥作用,但没有任何效果。
如果您希望用户从数据库复制并粘贴到浏览器中并输入有效的站点,我认为您应该验证网址格式 同时验证url是否存在 例如:
Uri.IsWellFormedUriString("http://www.google.com", UriKind.Absolute);
URL 的正确形式再次是正确的。
WebRequest request = WebRequest.Create("http://www.google.com");
try
{
request.GetResponse();
}
catch (Exception ex)
{
throw ex;
}
如果无法从 url 获取答案,则会返回异常
嗨。
如果我理解你的问题正确,那么我会这样检查:
public static bool ValidateUrl(string url)
{
return url.StartsWith("https://www.") || url.StartsWith("http://www.") || url.StartsWith("https://google.com") || url.StartsWith("http://google.com");
}
任何非 google.com 但带有 https://www 的域名。或 http://www.返回 true,否则返回 false。
如果你想测试 HTTP(S) url 是否良好,你应该使用这个: (信用:stackoverflow.com/a/56116499/215552)
Uri uriResult;
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult)
&& (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
所以在你的情况下:
public static boolean ValidateUrl(string url){
Uri uriResult;
return Uri.TryCreate(url, UriKind.Absolute, out uriResult)
&& (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
}
//编辑:试试这个:
public static bool ValidateUrl(string URL)
{
string Pattern = @"(http(s)?://)?([\w-]+\.)+[\w-]+[\w-]+[\.]+[\][a-z.]{2,3}$+([./?%&=]*)?";
Regex Rgx = new Regex(Pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
return Rgx.IsMatch(URL);
}
我通过编写一个使用正则表达式来验证 url 的小辅助方法来使其工作。
以下网址的通行证:
google.com
www.google.com
它失败了:
www.google.com/a bad path with space/
下面是我创建的辅助方法:
public static bool ValidateUrl(string value, bool required, int minLength, int maxLength)
{
value = value.Trim();
if (required == false && value == "") return true;
if (required && value == "") return false;
Regex pattern = new Regex(@"^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$");
Match match = pattern.Match(value);
if (match.Success == false) return false;
return true;
}
这允许用户输入任何有效的网址,而且它还可以解决带有空格的错误网址路径,这正是我所需要的。