将地址转换为链接的正则表达式(regex url href)

将文章内容中没有链接的地址转换为链接。

代码如下:

    public static string ShowUrls(string text)
     {
         //代码来自博客园 http://www.cnblogs.com
         Regex linkRegex = new Regex(" href\\s*=\\s*(?:(?:\\\"(?<url>[^\\\"]*)\\\")|(?<url>[^\\s]*))",
             RegexOptions.IgnoreCase | RegexOptions.Compiled);        
         MatchCollection linkMatchs = linkRegex.Matches(text);
         
         string pattern = @"(http|ftp|https):\/\/[\w]+(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])";
         MatchCollection matchs;
 
        string clearText = Regex.Replace(text, "(<br>|<br/>)"," ", RegexOptions.IgnoreCase);
         clearText = Regex.Replace(clearText, "<[^>]*>", string.Empty, RegexOptions.Compiled);//清除html标记
         matchs = Regex.Matches(clearText, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
         bool flag1 = true;
         
         for(int i=0;i<matchs.Count;i++)
         {
             Match m = matchs[i];
             string link = "<a href=\"" + m.ToString() + "\" target=\"_blank\">" + m.ToString() + "</a>";
             if (linkMatchs.Count > 0)
             {
                 foreach (Match linkMatch in linkMatchs)
                 {
                     if (linkMatch.Value.IndexOf(m.Value) > -1)
                     {
                         flag1 = false;
                         break;
                     }
                 }
             }            
             if(flag1)
             {
                 bool flag2 = true;
                 for (int j = 0; j < i; j++)
                 {
                     if (m.ToString() == matchs[j].ToString())
                     {
                         flag2 = false;
                     }
                 }
                 if (flag2)
                 {
                     text = text.Replace(m.ToString(), link);
                 }
             }
             
         }
         return text;
     }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值