我当前有str.match(/(http[^\s]+)/i)
,不仅可以捕获内容中的链接,还可以捕获img标记(src =" http ...")和锚标记(href =&#34) ; HTTP ...&#34)
如何修改我的正则表达式,使其仅匹配" http / s"没有" src ="或" href ="在它之前?
答案 0 :(得分:3)
答案 1 :(得分:1)
您可以在http / s之前捕获不以=或者引号开头的链接:
str.match(/[^=\"](http[^\s]+)/i)
答案 2 :(得分:0)
您可以使用简单的http[^\s]+
(= http\S+
)覆盖匹配。
我建议使用正则表达式来匹配标记之外的文本,并将允许文本显示的标记列入白名单。这是正则表达式:
/(?![^<]*>|[^<>]*<\/(?!p\b|td|pre))https?:\/\/[a-z0-9&#=.\/\-?_]+/gi
(?!p\b|td|pre)
部分是我们添加白名单标签的地方。正则表达式不会捕获http://example.com,
。
请参阅demo