【发布时间】:2012-02-08 15:41:47
【问题描述】:
我需要一个 C# 中的工作正则表达式代码,它可以检测字符串中的纯文本 url (http/https/ftp/ftps),并通过在其周围放置一个具有相同 url 的锚标记来使它们可点击。我已经做了一个Regex模式,代码附在下面。
但是,如果输入字符串中已经存在任何可点击的 url,那么上面的代码会在其上放置另一个锚标记。例如,以下代码中的现有子字符串: string sContent: "ftp://www.abc.com'>ftp://www.abc.com" 在运行以下代码时有另一个锚标记。有什么办法可以解决吗?
string sContent = "ttt <a href='ftp://www.abc.com'>ftp://www.abc.com</a> abc ftp://www.abc.com abbbbb http://www.abc2.com";
Regex regx = new Regex("(http|https|ftp|ftps)://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", RegexOptions.IgnoreCase);
MatchCollection mactches = regx.Matches(sContent);
foreach (Match match in mactches)
{
sContent = sContent.Replace(match.Value, "<a href='" + match.Value + "'>" + match.Value + "</a>");
}
另外,我想要一个正则表达式代码,使电子邮件可以点击“mailto”标签。我可以自己做,但是上面提到的双锚标签的问题也会出现在里面。
【问题讨论】: