一个文本框里提交的内容 如果有HTTP开头的字符串就自动加上链接
但是还要判断两种情况1:<a href="http字符串">...</a>2:<a href="...">http字符串</a>以上两种情况就不用自动加上连接拉也就是说只检查没有设置连接的 HTTP开头的字符串可能要用到正则表达式 请大家指点
但是还要判断两种情况1:<a href="http字符串">...</a>2:<a href="...">http字符串</a>以上两种情况就不用自动加上连接拉也就是说只检查没有设置连接的 HTTP开头的字符串可能要用到正则表达式 请大家指点
//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);
谢谢你的解答,你的方法我试了一下
发现提交的整个内容都被加上链接拉能不能只对内容中 网址部分加链接呢
//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);
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);
可能是这样<a href=http://www.123.com>...</a>
<a href='http://www.123.com'>...</a>
<a href="http://www.123.com">...</a>这样的情况可能要判断HTTP字符串前面是否是' " =
HTTP字符串的结尾以空字符或者换行符总体来说感觉有点复杂呵呵 感谢大家踊跃指点
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);