什么是在字符串中查找和替换url的最佳方法

时间:2014-05-06 17:17:50

标签: c# regex url

什么是在字符串中查找和替换url的最佳方法。现在我使用regexp

Regex regx = new Regex("http(s)?://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*([a-zA-Z0-9\\?\\#\\=\\/]){1})?",
RegexOptions.IgnoreCase);
string output = regx.Replace(text, "<a href=\"$0\" target=\"_blank\">$0</a> ");

但这是丑陋的代码并且工作很糟糕,因为它找不到www.server.com而且http://server.nonexist是坏的url bur regexp找到这个。

使用html链接获取一些长字符串和返回字符串的最佳方法是什么?

例如

input = Lorem ipsum dolor sit http://www.server.com/ amet
output = Lorem ipsum dolor sit <a href="http://www.server.com/"> http://www.server.com/</a> amet

1 个答案:

答案 0 :(得分:1)

您想确保网址是 legal 网站,或者至少是现有服务器吗?正则表达式不能这样做。

您需要分两步完成此操作 - 首先是您的RegEx,只有将其更新为包括www.something.or.other.com,即使没有协议。确保将域名放在一个组中,以便在匹配之后,访问它将很容易。

扫描字符串以查找正则表达式。然后查看匹配项并执行第二步 - 检查域是否合法。如果是,请用<a href...包裹,如果没有 - 保持原样,或警告用户,或其他什么。