如下一段HTML
劳动的圆舞曲这是一种古老的作业方http://club.wei.com/8891957.html<a href="http://club.wei.com/8891957.html"><img src="http://club.wei.com/8891957.jpg" /></a>我要将非A连接、IMG里的URL替换成链接,根据观察,可以把目标集中在非 "" 内的URL地址。于是大致写了个正则:(?!")(https?:\/\/[-a-zA-Z0-9\+&@#\/%\?=~_|!:,\.;]+)(?!")经过匹配发现,第一个链接是正确捕获了。但是下面的链接也照样匹配了,只是将链接的最后一个字符没匹配进去,这样我也能理解。
请教高手要实现我的需求,该怎么写呢?又写了个测试:
正则:war(?![2|3]) 
查找字符串 “aaawar2.1aaawar1war3”
这样能顺利找到war1 前的war 所以,我认为是因为 https?:\/\/[-a-zA-Z0-9\+&@#\/%\?=~_|!:,\.;]+ 这段有问题,如何匹配所有的字符而不把截断的认作符合要求呢?

解决方案 »

  1.   

    直接获取元素然后element.href或者element.src就能获得相应字符串了,何必用正则这么麻烦。
      

  2.   

    javascript只支持顺序环视,不支持逆序环视,所以没有办法做到逆向查找
    而你的正则前面的(?!")是顺序环视,它只对右侧附加限定条件,而它的右侧就是字符“h”,所以这个条件没有任何意义在你的正则基础上简单的改动,肯定是无法做到严谨的,不过在你的环境下试下看能不能满足条件吧
    https?:\/\/[-a-zA-Z0-9\+&@#\/%\?=~_|!:,\.;]+(?![^<>]*")