一个文本框里提交的内容 如果有HTTP开头的字符串就自动加上链接
但是还要判断两种情况1:<a href="http字符串">...</a>2:<a href="...">http字符串</a>以上两种情况就不用自动加上连接拉也就是说只检查没有设置连接的 HTTP开头的字符串可能要用到正则表达式 请大家指点

解决方案 »

  1.   

    string strContent = txtKey.Value; //
    //Regex emailregex = new Regex(@"([a-zA-Z_0-9.-]+\@[a-zA-Z_0-9.-]+\.\w+)", RegexOptions.IgnoreCase| RegexOptions.Compiled);

    Regex re = new Regex(@"<a[^>]+href=\s*(?:'(?<href>[^']+)'|""(?<href>[^""]+)""|(?<href>[^>\s]+))\s*[^>]*>(?<text>.*?)</a>",   RegexOptions.IgnoreCase |RegexOptions.Singleline);
    if (!re.IsMatch(strContent))
    {
    Regex urlregex = new Regex(@"(http:\/\/([\w.]+\/?)\S*)", RegexOptions.IgnoreCase| RegexOptions.Compiled);
    if (urlregex.IsMatch(strContent))
    {
    strContent = "<a href=\""+ strContent +"\" target=\"_blank\">"+ strContent +"</a>";
    }
    }
    Response.Write(strContent);
      

  2.   

    to:hertcloud
    谢谢你的解答,你的方法我试了一下
    发现提交的整个内容都被加上链接拉能不能只对内容中 网址部分加链接呢
      

  3.   

    string strContent = txtKey.Value;
    //Regex emailregex = new Regex(@"([a-zA-Z_0-9.-]+\@[a-zA-Z_0-9.-]+\.\w+)", RegexOptions.IgnoreCase| RegexOptions.Compiled);

    Regex re = new Regex(@"<a[^>]+href=\s*(?:'(?<href>[^']+)'|""(?<href>[^""]+)""|(?<href>[^>\s]+))\s*[^>]*>(?<text>.*?)</a>",   RegexOptions.IgnoreCase |RegexOptions.Singleline);

    if (!re.IsMatch(strContent))
    {
    Regex urlregex = new Regex(@"(http:\/\/([\w.]+\/?)\S*)", RegexOptions.IgnoreCase| RegexOptions.Compiled);
    if (urlregex.IsMatch(strContent))
    {
    Match em = urlregex.Match(strContent);
    string st = strContent.Substring(em.Index, em.Length); strContent = strContent.Replace(st, "<a href=\""+ st +"\" target=\"_blank\">"+ st +"</a>");
    //st = "<a href=\""+ st +"\" target=\"_blank\">"+ st +"</a>";
    }
    }
    Response.Write(strContent);
      

  4.   

    这个似乎快可以了不过出现一个新情况提交内容中只要有一个网址已加链接 其他没加链接的网址就不会被替换拉hertcloud麻烦你再想想办法感谢
      

  5.   

    楼主可以把可能出现的情况具体说下
    1:<a href="http字符串">...</a>
    2:<a href="...">http字符串</a>
    这两种情况下“href=”后一定是“"”吗需要加链接的 HTTP开头的字符串以什么为结束标志,空格吗,如果是这样,完全可以写进一个正则表达式的
    yourStr = .................;
    string resultStr = Regex.Replace(yourStr, @"(?<!((<a\s+href([\s\S]*?)>)|(<a\s+href="")))(http([^\s<]*))",@"<a href=""$5"" target=""_blank"">$5</a>",RegexOptions.IgnoreCase);
      

  6.   

    to:lxcnn不一定
    可能是这样<a href=http://www.123.com>...</a>
    <a href='http://www.123.com'>...</a>
    <a href="http://www.123.com">...</a>这样的情况可能要判断HTTP字符串前面是否是' " =
    HTTP字符串的结尾以空字符或者换行符总体来说感觉有点复杂呵呵 感谢大家踊跃指点
      

  7.   

    改造了一下,楼主试下
    yourStr = ...............;
    string resultStr = Regex.Replace(yourStr, @"(?<!((<a\s+href([\s\S]*?)>)|(<a\s+href=[""']?)))(http([^\s\n]*))",@"<a href=""$5"" target=""_blank"">$5</a>",RegexOptions.IgnoreCase);