0

我有这个正则表达式来匹配文本的http://链接式部分:

([A-Za-z]{3,9}):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?(\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?

然后用一些代码将它们转换为超链接。它真的很好用。

但是,http:// 部分文本也可以在 <img> 标签中找到:

<img src="http://www.nature.com/images/home_03/main_news_pic2013.02.19.jpg" alt="Pulpit rock" width="304" height="228">

因此,我必须修改现有的正则表达式,以不匹配之前带有引号或撇号的类似 http 链接的文本部分。如何不匹配:

"http

我尝试使用 [^"|']:

[^"|']([A-Za-z]{3,9}):\/\/ ..........

但它不起作用。

4

1 回答 1

2

您需要使用否定的lookbehind(即“不在前面”):

(?<!")http://…
于 2013-02-20T15:30:34.473 回答