我正在使用C#为这个项目,基本上我需要的是一种将纯文本转换为HTML的方式,我找到了一个正则表达式(实际上是Stack Overflow),用于将文本中的链接转换为在HTML锚链接,它看起来像这样:正则表达式与URL提取
Regex regx = new Regex(@"https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?", RegexOptions.IgnoreCase);
MatchCollection mactches = regx.Matches(input);
foreach (Match match in mactches)
{
output = output.Replace(match.Value, String.Format("<a href=\"{0}\" target=\"_blank\">{0}</a>", match.Value));
}
它的伟大工程,但我发现,它并没有考虑破折号一个缺陷( - )作为URL的一部分,所以当它击中第一破折号关闭锚标记。 所以我很明显需要在正则表达式中包含破折号,但问题是我完全不知道RegEx的情况,它对我来说看起来像俄语。 有没有人有一个想法,我需要对RegEx表达做些什么小小的修改,以便在URL中包含一个破折号作为允许的字符?
你可以举一个它不匹配的URL的例子吗?我的测试表明它的确如此。 – 2013-02-18 05:18:27
另外,你有'matches'拼写错误:p – 2013-02-18 05:24:53