2011-09-28 135 views

回答

291

試試這個驗證的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); 
+6

如果這種閱讀uriResult.Scheme而不是uriName.Scheme?我正在使用TryCreate的重載,它接受String而不是Uri,因爲它是第一個參數。 –

+7

您可能需要向uriResult.Scheme ==添加更多條件...具體爲https。這取決於你需要什麼,但是這個小小的改變是我需要完美的工作。 – Fiarr

+8

要明確每個@ Fiarr的評論,除了HTTP URL之外,需要考慮HTTPS的「小改動」是:'bool result = Uri.TryCreate(uriName,UriKind.Absolute,out uriResult)&& uriResult.Scheme == Uri .UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;' – J0e3gan

4

經過Uri.TryCreate您可以檢查Uri.Scheme以查看它是否是HTTP(s)。

0

這將返回布爾:

Uri.IsWellFormedUriString(a.GetAttribute("href"), UriKind.Absolute) 
+1

我認爲OP特別提到,他不喜歡Uri.IsWellFormedUriString,因爲它爲文件路徑提供了真實性。你有解決這個問題的辦法嗎? – Isantipov

0
Uri uri = null; 
if (!Uri.TryCreate(url, UriKind.Absolute, out uri) || null == uri) 
    return false; 
else 
    return true; 

這裏url是你必須測試的字符串。

14
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 
} 
+0

這似乎沒有處理www網址。 IE:www.google.com顯示爲無效。 –

+4

@ZauberParacelsus「www.google.com」無效。 URL的意思應該以「http」,「ftp」,「file」等字符開頭。字符串應該是「http:// www.google.com」,不得有空格 –

53

此方法既http和https罰款。只有一行:)

if (Uri.IsWellFormedUriString("https://www.google.com", UriKind.Absolute)) 

MSDN:IsWellFormedUriString

+4

這將對非HTTP URI返回true(即[任何其他方案](https://msdn.microsoft.com/en-us/library/system.uri.scheme(v = vs.110).aspx),如'file://'或'ldap://'。 這個解決方案應該加上一個對照計劃的檢查 - 例如'if(uri.Scheme!= Uri.UriSchemeHttp && uri.Scheme!= Uri.UriSchemeHttps)...' – Squiggle

+4

失敗17測試在這裏:https:// dotnetfiddle。淨/ XduN3A – Lee

相關問題