Regexp捕获不在锚标记中的链接

时间:2015-06-12 17:53:13

标签: javascript regex

我正在尝试在JavaScript中使用regexp来捕获文本中的所有链接,除了锚标记内的所有链接(href属性或内部文本)。

例如,以下内容应匹配:

http://google.com

但是,以下内容不应匹配:

<a href="http://google.com">Link</a>
<a href="http://google.com">http://google.com</a>

我找到this post on StackOverflow,但它需要lookbehind,JavaScript不支持。

3 个答案:

答案 0 :(得分:3)

尝试:

(ht|f)tps?:\/\/[^"]*?(?=<|\s|$)

答案 1 :(得分:0)

OhAuth的答案(ht|f)tps?:\/\/[^"]*?(?=<|\s|$)使用锚标记中的实际链接后跟(&#34;)这一事实,这意味着无论是后观还是其解决方法都不是必需的。

编辑:

仅使用前瞻,我们可以实现以下内容:(ht|f)tps?:\/\/[^\"<]*?(?=\s|$|<\/[^a]>),结果如下:https://regex101.com/r/eR3mT4/1,在包含链接和附加字符的锚标题中失败。对于正则表达式而言,这种情况似乎很难,而且看起来不会有帮助。

答案 2 :(得分:0)

检查一下:

https://stackoverflow.com/a/35603748/2943191

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