2011-06-07 47 views
1

我想要一個匹配的正則表達式;將字符串中的URL與正則表達式鏈接起來

  1. WWW
  2. HTTP
  3. HTTPS

它應該在的字符串僅可點擊的URL。 這樣做的最好方法是什麼?

我現在擁有的是這個,但這不符合www。另外,我不知道如何使整個文本在標籤中可見,而不僅僅是鏈接。我想這可以做一些空間分離和遞歸循環,如果有人有一個好主意,我會很高興聽到它。

Regex r = new Regex(@"(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?"); 


      // Match the regular expression pattern against a text string. 
      if (valueString != null) 
      { 
       Match m = r.Match(valueString); 
       if (m.Success) 
       { 
        labelHtml = "<a href=\"" + m.Value + "\">" + m.Value + "</a>"; 
       } 
      } 
      ((Label)control).Text = labelHtml; 
+2

http://stackoverflow.com/questions/758135/c-code-to-linkify-urls-in-a -串 – 2011-06-07 07:12:48

回答

1

Anton Hansson給你鏈接到有效的正則表達式和替換代碼。下面是更多的advaced方式,如果你wan't做更多的東西與發現的網址等

var regex = new Regex("some valid regex"); 
var text = "your original text to linkify"; 
MatchEvaluator evaluator = LinkifyUrls; 
text = regex.Replace(text, evaluator); 

... 

private static string LinkifyUrls(Match m) 
{ 
    return "<a href=\"" + m.Value + "\">" + m.Value + "</a>"; 
} 
0

您可以使用Uri類。它進行驗證。

var url = new Uri("http://www.google.com"); 
var text = url.ToString(); 

它會引發異常,如果它是無效的網址。如果沒有例外情況,您可以使用靜態Uri.TryCreate

相關問題