正则表达式仅替换链接而不替换 src 属性



我正在尝试在渲染时用可点击的链接替换文本块中的网址。

正则表达式正在使用:

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

This is the text i got from http://www.sample.com

它应该转换为

This is the text i got from
<a href="http://www.sample.com">http://www.sample.com</a>

问题是当文本具有 img 标签时,SRC 属性也会被替换,这是我不想要的。

请帮我只替换直接链接,而不是 src=" 属性中的链接

谢谢

在正则表达式的开头添加一个否定的后视断言,以仅搜索不在src="之后的字符串:

(?<!src=")

编辑:不幸的是,后视断言在javascript正则表达式中不起作用。或者,您可以使用如下否定的前瞻断言:

((?!src=").{0,4})

请记住,您需要在替换中使用匹配的字符串(否则您将在http://之前删除 4 个字符(。

最新更新