|[^<>]*?标签被排除在外 - 因此解决方案可能是仅将最后一项修改为: [^<>]*? 但是现在如果我有嵌套-6ren">
gpt4 book ai didi

Javascript 正则表达式 : Find all URLs outside tags - Nested Tags

转载 作者:可可西里 更新时间:2023-11-01 13:03:48 25 4
gpt4 key购买 nike

最佳答案

事实证明,最好的解决方案可能如下:

((https?|ftps?):\/\/[^"<\s]+)(?![^<>]*>|[^"]*?<\/a)

看起来负先行只有在以 quantifiers 开头时才能正常工作而不是字符串。对于这种情况,实际上我们只能进行回溯。

同样,我们只是想确保 HTML 标签内的任何内容都不会被弄乱。然后我们从</a开始回溯。到第一个 "符号(因为它不是有效的 URL 符号,但 <> 符号出现在嵌套标签中)。

现在还在 <a> 中嵌套了标签正确找到标签。当然,代码并不完美,但它应该适用于几乎所有简单的 HTML 标记。只是您可能需要小心一点:

  • <a> 内放置引号标签;
  • 不要在 <a> 上使用此算法没有任何属性的标签 ( placeholders );
  • 以及您可能需要避免使用多个嵌套标签/行,除非 URL 在 <a> 内标记在任何双引号之后。


这是一个非常好的和困惑的例子(最后一个匹配不应该找到,但它是):

https://regex101.com/r/pC0jR7/2

很遗憾,这个前瞻不起作用:(?!<a.*?<\/a>)

关于Javascript 正则表达式 : Find all URLs outside <a> tags - Nested Tags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35553751/

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