【问题标题】:Convert Plain Text Links to HTML links with regular expressions使用正则表达式将纯文本链接转换为 HTML 链接
【发布时间】:2009-11-22 19:29:53
【问题描述】:

我需要将纯文本链接转换为 HTML 链接的正则表达式。

以下是测试链接:

http://www.a-domain.com/something/?something
www.a-domain.com/something/?something

正则表达式也应该在以下假设下工作:

应忽略不属于 URL 一部分的 URL 附加的任何内容(例如逗号或句点)。我找到了this one,但它并不能满足我的所有需求。

有人有适合我需要的正则表达式吗?

【问题讨论】:

    标签: c# asp.net html regex


    【解决方案1】:

    this blog post 中,正则表达式大师 Jan Goyvaerts 展示了一些如何在纯文本中匹配 URL 的方法。他还展示了许多常见的陷阱。

    对于你的情况,我建议

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

    (打开不区分大小写模式)

    【讨论】:

    • 谢谢 :) 它似乎做了一些更好的匹配。
    • 嗯,mailto: 不见了。还有一些其他的好东西,比如gopher:(jk,虽然:-))。
    • 我知道;请参阅上面的链接以获取还包含 mailto: 的版本(如果您愿意,可以扩展为 gopher: :))
    【解决方案2】:
    (http://|www\.)([^\s()[\]<>]+|\([^\s)]*\)|\[[^\s\]]*])+(?<![.,!?])
    

    这可以处理大多数情况,但不会尝试处理所有情况。 (它在最后使用否定的lookbehind 断言;我不知道您的 C# 或 asp.net 正则表达式库是否可以处理这个问题,但这是一种简单的方法,可以在最后使这些字符“不贪婪”。 )

    您没有非常明确地说明您的需求或链接的正则表达式如何不满足它们;对您来说,应该和不应该匹配的更多示例会澄清,但我认为这会有所帮助。

    【讨论】:

    • 其实我认为可以:) regexlib.com/RETester.aspx 是一个非常好的测试器,可以测试.Net、JavaScript、VBScript。但是,我确实注意到 http:// 或 www。在 1 美元中,其余的(www.something.com 或 something.com)在 2 美元中,我想这需要我测试 http:// 是否已经存在,然后才能将文本链接到链接。
    • 是的,我只在此处构建了匹配的组,认为您可以根据需要调整它并且您的正则表达式熟悉度允许。如果不存在,我会提取完整的匹配项并添加 http://,然后为您提供一致的表单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多