【问题标题】:Recognize URL in plain text识别纯文本 URL
【发布时间】:2010-09-25 09:51:52
【问题描述】:

这应该很容易,但我不确定如何最好地进行。我有一个 WinForms 应用程序,可让用户输入长描述。有时,他们会输入 URL,RichTextBox 会识别它们并在显示时使它们可点击。

我正在将应用程序移至网络,但我不确定如何使这些相同的 URL 可点击。是否有一些半自动的方法可以将“http://www.google.com”或“www.google.com”转换为可点击的链接?我必须求助于 RegEx 匹配吗?

【问题讨论】:

    标签: asp.net regex url


    【解决方案1】:

    这实际上是一个非常困难的问题。您可以使用正则表达式接近,但并不完美。这里有一个非常好的潜在正则表达式模式细分:http://www.regexguru.com/2008/11/detecting-urls-in-a-block-of-text/

    他列出的最后一个似乎对于大多数用途来说已经足够了:

    \b(?:(?:https?|ftp|file)://|www\.|ftp\.)
      (?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*
      (?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[A-Z0-9+&@#/%=~_|$])
    

    【讨论】:

      【解决方案2】:

      小心。如果您的用户生成的可点击 URL 对其他用户可见,那么您将引入跨站点脚本攻击等新问题。此外,您可能需要清理 URL。例如,URL 中可能有一个 & 符号,但您需要对其进行转义。

      所以,实际上有两个步骤。 1. 找到网址。 2. 使网址可点击。

      第 2 步可能更难。

      另外,请注意括号之类的内容。一些用户乐于在一个句子中使用他们的 URL,然后以句点结尾。例如。我喜欢http://www.pie.com.It 很好。解决此问题的最佳方法之一就是在用户键入时生成 URL。如果出现问题,他们将能够在提交之前告知。

      【讨论】:

      • 幸运的是,这只是内部参考数据,因此攻击不是什么大问题。 URL 已经在文本中,因此不能在输入时对它们进行寻址(尽管它会是一个不错的选择)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2023-04-05
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      相关资源
      最近更新 更多