我正在尝试在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不支持。
答案 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)