gpt4 book ai didi

javascript - 如何匹配 URL 但不在括号中

转载 作者:行者123 更新时间:2023-11-27 23:02:16 24 4
gpt4 key购买 nike

我的网址可能位于括号内,如下所示:

[[!;;;;http://example.com/foo]some text]

如何匹配 URL,但当它们位于括号中时则不然,某些文本 也可能是 URL。我需要将所有网址替换为该格式。

到目前为止,我有匹配 URL 的正则表达式:

var url_re = /(\bhttps?:\/\/(?:(?:(?!&[^;]+;)|(?=&amp;))[^\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]

最佳答案

您可以添加一个 (?![^[\]]*]) 否定前瞻,以避免在结束 ] 之前匹配模式任何其他 []:

\b(https?:\/\/(?:(?:(?!&[^;]+;)|(?=&amp;))[^\s"'<>\][)])+)\b(?![^[\]]*])

并替换为[[!;;;;$1]$1]。请参阅regex demo

另一个选项是匹配并捕获 [...[...]...] 内的所有内容,然后在 String.replace() 内使用回调正确处理每个捕获,但上面看起来“更干净”并且更直接。

关于javascript - 如何匹配 URL 但不在括号中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36977571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com