正则表达式只捕获纯文本中的http / https

时间:2015-04-22 20:12:34

标签: javascript regex

我当前有str.match(/(http[^\s]+)/i),不仅可以捕获内容中的链接,还可以捕获img标记(src =" http ...")和锚标记(href =&#34) ; HTTP ...&#34)

如何修改我的正则表达式,使其仅匹配" http / s"没有" src ="或" href ="在它之前?

3 个答案:

答案 0 :(得分:3)

您可以使用其他\shrefsrc在网址前不会有空格字符。在普通文本中,有一个空格。

str.match(/\s(http[^\s]+)/i)

另见DEMO

答案 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