2010-06-26 43 views

回答

0

您可以使用正則表達式來檢查輸入的文本是否是一個有效的網址:)

using System.Text.RegularExpressions; 

private bool validateURL() 
     { 

      Regex urlCheck = new Regex("^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$"); 

      if (urlCheck.IsMatch(txtUrlAddress.Text)) 
       return true; 
      else 
      { 
       MessageBox.Show("The url address you have entered is incorrect!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
       return false; 

      } 




     } 

您可以在這裏 使用此功能

if (validateURL() == true) 
      //Do something 
    else 
      //Do something else 

檢查URL的更多RegularExpressions http://www.regexlib.com/Search.aspx?k=url&c=-1&m=5&ps=20

+0

首先,com,org,net,mil和edu不是唯一有效的域名結尾,並且OP也沒有說它必須嚴格是你的正則表達式所要求的域的根。 – Davy8 2010-06-26 15:44:45

+0

@ Davy8,這只是一個建議的解決方案。他可以檢查並查看是否有其他任何他認爲是最好的正則表達式並使用它。我沒有看到任何其他方式,你可以檢查字符是否是一個有效的網址:) – 2010-06-26 15:49:59

1

我不認爲有一個內置的方法或類,你可以用來驗證一個字符串作爲一個合法的URL 。但是你可以使用正則表達式,就像[「^ a-zA-Z0-9 -._」] +。([a-zA-Z] [a-zA-Z]) 如果你使用Ranhiru的代碼,例如bild.de和s.int都是不合適的,它們都是有效的url。

+0

是的,我同意我的正則表達式不適用於所有情況。但使用不同的正則表達式會爲他工作:) – 2010-06-26 15:59:05

1

你需要的網址有效或只是正確的格式?如果是後者,那麼你可能需要一個正則表達式,正如其他答案所指出的那樣 - 但要讓它適用於所有的網址可能會非常棘手。

如果是前者,那麼只需嘗試並解析URL即可。有幾種方法可以做到這一點,每種方法都有缺點。例如,如果您使用「ping」,那麼您需要先刪除任何前導「http://」。

但是,這種方法並非萬無一失,因爲a)您可能沒有互聯網連接,並且b)主機可能關閉。

1

如何:

public void Test() 
    { 
     Uri result = UrlIsValid("www.google.com"); 
     if (result == null) 
     { 
      //Invalid Url format 
     } 
     else 
     { 
      if (UrlExists(result)) 
      { 
       //Url is valid and exists 
      } 
      else 
      { 
       //Url is valid but the site doesn't exist 
      } 
     } 
     Console.ReadLine(); 
    } 

    private static Uri UrlIsValid(string testUrl) 
    { 
     try 
     { 
      if (!(testUrl.StartsWith(@"http://") || testUrl.StartsWith(@"http://"))) 
      { 
       testUrl = @"http://" + testUrl; 
      } 
      return new Uri(testUrl); 
     } 
     catch (UriFormatException) 
     { 
      return null; 
     } 
    } 

    private static bool UrlExists(Uri validUri) 
    { 
     try 
     { 
      WebRequest.Create(validUri).GetResponse(); 
      return true; 
     } 

     catch (WebException) 
     { 
      return false; 
     } 
    } 

如果你只需要檢查它在你可以取出UrlExists部分正確的格式。

0

簡單多了:

/// <summary> 
    /// Validates that the URL text can be parsed. 
    /// </summary> 
    /// <remarks> 
    /// Does not validate that it actually points to anything useful. 
    /// </remarks> 
    /// <param name="urlText">The URL text.</param> 
    /// <returns></returns> 
    private bool ValidateURL(string urlText) 
    { 
     bool result; 

     try 
     { 
      Uri check = new Uri(urlText); 
      result = true; 
     } 
     catch (UriFormatException) 
     { 
      result = false; 
     } 

     return result; 
    } 
0

它的工作對我來說

私人布爾ValidateURL(字符串urlText) { 布爾結果;

try 
    { 
     Uri check = new Uri(urlText); 
     result = true; 
    } 
    catch (UriFormatException) 
    { 
     result = false; 
    } 

    return result; 
}