我需要正则表达式将纯文本链接转换为HTML链接。
以下是以下测试链接:
http://www.a-domain.com/something/?something
www.a-domain.com/something/?something
正则表达式也应该在以下假设下工作:
应该忽略附加到URL的任何不属于URL(例如逗号或句点)的内容。我找到this one,但它不能满足我的所有需求。
有没有人为我的需要提供正确的正则表达式?
答案 0 :(得分:3)
在this blog post中,Regex大师Jan Goyvaerts展示了如何在纯文本中匹配URL的几种方法。他还展示了许多常见的陷阱。
对于你的情况,我建议
\b(?:(?:https?|ftp|file)://|www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]
(开启不区分大小写的模式)
答案 1 :(得分:0)
(http://|www\.)([^\s()[\]<>]+|\([^\s)]*\)|\[[^\s\]]*])+(?<![.,!?])
这可以处理大多数情况,但不会尝试处理所有情况。 (它在最后使用负面的lookbehind断言;我不知道你的C#或asp.net正则表达式库是否可以处理它,但它是一种简单的方法,使它最终对这些字符“非贪婪”。 )
您并未明确表达您的需求或链接的正则表达式如何不符合它们;对于你来说,应该和不应该匹配的更多例子会澄清,但我认为这会有所帮助。