還有的Uri.IsWellFormedUriString
和Uri.TryCreate
方法,但他們似乎回到true
文件路徑等如何檢查字符串是否是有效的HTTP URL?
如何檢查字符串是否是用於輸入驗證目的的有效(不一定有效)HTTP URL?
還有的Uri.IsWellFormedUriString
和Uri.TryCreate
方法,但他們似乎回到true
文件路徑等如何檢查字符串是否是有效的HTTP URL?
如何檢查字符串是否是用於輸入驗證目的的有效(不一定有效)HTTP URL?
試試這個驗證的HTTP URL(uriName
是URI你想測試):
Uri uriResult;
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult)
&& uriResult.Scheme == Uri.UriSchemeHttp;
或者,如果你想接受HTTP和HTTPS作爲有效(每J0e3gan的評論)網址:
Uri uriResult;
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult)
&& (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
經過Uri.TryCreate
您可以檢查Uri.Scheme
以查看它是否是HTTP(s)。
這將返回布爾:
Uri.IsWellFormedUriString(a.GetAttribute("href"), UriKind.Absolute)
我認爲OP特別提到,他不喜歡Uri.IsWellFormedUriString,因爲它爲文件路徑提供了真實性。你有解決這個問題的辦法嗎? – Isantipov
Uri uri = null;
if (!Uri.TryCreate(url, UriKind.Absolute, out uri) || null == uri)
return false;
else
return true;
這裏url
是你必須測試的字符串。
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
}
這似乎沒有處理www網址。 IE:www.google.com顯示爲無效。 –
@ZauberParacelsus「www.google.com」無效。 URL的意思應該以「http」,「ftp」,「file」等字符開頭。字符串應該是「http:// www.google.com」,不得有空格 –
此方法既http和https罰款。只有一行:)
if (Uri.IsWellFormedUriString("https://www.google.com", UriKind.Absolute))
如果這種閱讀uriResult.Scheme而不是uriName.Scheme?我正在使用TryCreate的重載,它接受String而不是Uri,因爲它是第一個參數。 –
您可能需要向uriResult.Scheme ==添加更多條件...具體爲https。這取決於你需要什麼,但是這個小小的改變是我需要完美的工作。 – Fiarr
要明確每個@ Fiarr的評論,除了HTTP URL之外,需要考慮HTTPS的「小改動」是:'bool result = Uri.TryCreate(uriName,UriKind.Absolute,out uriResult)&& uriResult.Scheme == Uri .UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;' – J0e3gan