var s = "http://www.baidu.com及http://www.baidu.com和测试的发放的xxxx.aaaa及http://172.18.10.113/ntt.nsf/vform?openform&seq=1和这个wwww.baidu.com";s = s.replace(/((\)?(http:\/\/)?(\w+\.)+\w+(\/[\w- ./?%&=]*)?)/img,
function($0, $1, $2) {
        return ($1.indexOf('[url]') >= 0)? $1 : '<a href="'+ $1 +'" class="ContentTextURL">'+ $1 +'</a>'
 });
return s;以上的代码只处理除了[url]
外的http链接,但是没想到xxxx.aaaa也会被处理,就是包含了"."符号的就会被处理。有什么方法不让xxxx.aaaa也变成链接呢?

解决方案 »

  1.   

    var s = "http://www.baidu.com及http://www.baidu.com和测试的发放的xxxx.aaaa及http://172.18.10.113/ntt.nsf/vform?openform&seq=1和这个wwww.baidu.com";s = s.replace(/((\[url])?(http:\/\/)?(\w+\.){2}\w+(\/[\w- ./?%&=]*)?)/img,
    function($0, $1, $2) {
      return ($1.indexOf('[url]') >= 0)? $1 : '<a href="'+ $1 +'" class="ContentTextURL">'+ $1 +'</a>' 
     });
     alert("s="+s);
      

  2.   


    (?<!url\])http://([\w./?=&]+)+(?!\[\/url])
      

  3.   

    不行啊,如果有两个..还是会被解析啊。或许只有一个方法,就是只处理包含http的?
      

  4.   

    按照3楼的那种方法不行啊,如果是xxx.aaa.xxx同样变成了链接。如果只有包含http才解析,如何做呢?
      

  5.   

    你的aaa是不是固定的啊,如果是,就按照去掉[URL]方式处理呗。如果aaa不是固定的,没有办法识别wwww.baidu.com和xxx.aaa.xxx哪个要,哪个不要。除非LZ自己再提供一些别的标志。
      

  6.   

    只含有http的的话把(http:\/\/)?后面的?去掉