【问题标题】:whats is the best way to find and replace url in string [duplicate]什么是在字符串中查找和替换 url 的最佳方法 [重复]
【发布时间】:2014-06-23 10:29:40
【问题描述】:

whats 是在字符串中查找和替换 url 的最佳方法。现在我使用正则表达式

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 正则表达式找到这个。

获取一些长字符串并返回带有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

【问题讨论】:

  • 我不会这么说的。这是一个完全不同的话题
  • 我看不出这是问题的重复。
  • @ErikPhilips 这不是重复的,因为正则表达式是匹配一个 URL 并被替换为标签,而不是相反。
  • Obligatory link 是一个真正的答案,而不是一个甚至不适用的愚蠢笑话。

标签: c# regex url


【解决方案1】:

您想确保该 URL 是一个合法网站,或者至少是一个现有的服务器?正则表达式无法做到这一点。

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

扫描您的字符串以查找正则表达式。然后检查匹配项并执行第二步 - 检查域是否合法。如果是,则用&lt;a href... 包装它,如果不是 - 保持原样,或警告用户,或其他方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2015-05-13
    • 1970-01-01
    相关资源
    最近更新 更多