【发布时间】:2016-08-26 22:20:20
【问题描述】:
我的网址可能在这样的括号内:
[[!;;;;http://example.com/foo]some text]
如何匹配 URL 但不是当它们在括号中时,some text 也可能是 URL。我需要将所有网址替换为该格式。
到目前为止,我有匹配 URL 的正则表达式:
var url_re = /(\bhttps?:\/\/(?:(?:(?!&[^;]+;)|(?=&))[^\s"'<>\]\[)])+\b)/gi;
示例输入:
http://example.com/foo [[!;;;;http://example.com/foo]some text] http://example.com/foo
输出:
[[!;;;;http://example.com/foo]http://example.com/foo] [[!;;;;http://example.com/foo]some text] [[!;;;;http://example.com/foo]http://example.com/foo]
【问题讨论】:
-
好的,你想用带标签的链接替换括号外的 URL。但是,您的 URL 可以位于嵌套的平衡括号内,对吧?
-
@WiktorStribiżew 是的,我用示例输入和输出更新了问题。
-
some text可以包含[或]吗?如果不是,请使用\b(https?:\/\/(?:(?:(?!&[^;]+;)|(?=&amp;))[^\s"'<>\][)])+)\b(?![^[\]]*])并替换为[[!;;;;$1]$1]
标签: javascript regex url