使用javascript Regex自动链接网址

l3u*_*fly 5 html javascript regex jquery

我有一段文本可能包含一些纯文本链接,或一些实际链接的链接.

例如:

Posting a link: http://test.com, posting an image <img src="http://test.com/2.jpg" />. Posting an actual A tag: <a href="http://test.com/test.html">http://test.com/test.html</a>
Run Code Online (Sandbox Code Playgroud)

我需要从这段文本中删除未格式化的链接.所以任何正则表达式将匹配第一种情况,但不是第二种或第三种情况,因为它们已经是格式良好的链接.

我已经设法用这个正则表达式删除了所有链接:((http:|https:)\/\/[a-zA-Z0-9&#=.\/\-?_]+)但是,我仍然无法区分这些情况.

这需要在javascript中,所以我不认为允许负面的lookbehind.

任何帮助,将不胜感激.

编辑:我正在尝试将未编辑的链接包装在一个标签中.

Wik*_*żew 5

您可以使用此正则表达式来获取标签之外的 URL:

(?![^<]*>|[^<>]*<\/)((http:|https:)\/\/[a-zA-Z0-9&#=.\/\-?_]+)
Run Code Online (Sandbox Code Playgroud)

演示

我们也可以通过一个i选项将其缩短一点:

(?![^<]*>|[^<>]*<\/)((https?:)\/\/[a-z0-9&#=.\/\-?_]+)
Run Code Online (Sandbox Code Playgroud)

另一个演示

示例代码:

(?![^<]*>|[^<>]*<\/)((http:|https:)\/\/[a-zA-Z0-9&#=.\/\-?_]+)
Run Code Online (Sandbox Code Playgroud)
(?![^<]*>|[^<>]*<\/)((https?:)\/\/[a-z0-9&#=.\/\-?_]+)
Run Code Online (Sandbox Code Playgroud)

更新

要允许在特定标签内捕获,您可以像这样将它们列入白名单:

var re = /(?![^<]*>|[^<>]*<\/(?!(?:p|pre)>))((https?:)\/\/[a-z0-9&#=.\/\-?_]+)/gi;
Run Code Online (Sandbox Code Playgroud)