有一个字符串http://www.xinhua.cn和我的http://www.baidu.com及http://172.18.10.114/netsail/bsoa-new.nsf/homepage?openform;s.replace(/((http:\/\/)?(\w+\.)+\w+(\/[\w- ./?%&=]*)?)/img, "<A target=_blank href='$1'>$1</A>")
这个正则可以把http的加上<a>链接,但是我要想里的那个http不处理,要怎么弄啊?请高手帮忙啊。

解决方案 »

  1.   

    s.replace(/((http:\/\/)?(\w+\.)+\w+(\/[\w- ./?%&=]*)?(?!\[\/url\]))/img, "<A target=_blank href='$1'>$1</A>")
      

  2.   

    楼上的,不行啊。里的那个http不处理,只处理外面一个。
      

  3.   

    好像不行,不如你就先把http://www.xinhua.cn的外部标签删除掉吧
      

  4.   

    奇怪……
    用以下代码可以得到"http://www.xinhua.cn"var s = "http://www.xinhua.cn和我的http://www.baidu.com及http://172.18.10.114/netsail/bsoa-new.nsf/homepage?openform";
    var reg = /((http:\/\/)?(\w+\.)+(\w)+(\/[\w- .\?\%\&\=]*)?)(?=(\[))/img
    alert(s.match(reg));但是用反向预查却只去掉了最后一个字母"n"?var s = "http://www.xinhua.cn和我的http://www.baidu.com及http://172.18.10.114/netsail/bsoa-new.nsf/homepage?openform";
    var reg = /((http:\/\/)?(\w+\.)+(\w)+(\/[\w- .\?\%\&\=]*)?)(?!(\[))/img
    alert(s.match(reg));不解,等高手解惑
    伴水哥呢?shan1119呢?怎么都不见……
      

  5.   

    好象最好的办法还是先删除掉...部分再取值。========================================================
    但是用反向预查却只去掉了最后一个字母"n"?
    var reg = /((http:\/\/)?(\w+\.)+(\w)+(\/[\w- .\?\%\&\=]*)?)(?!(\[))/img
    这正好说明了(?!(\[))起作用了。因为前移一个字母,就能满足后面不跟字符“[”,所以它会匹配到www.xinhua.c
      

  6.   

    var s = "http://www.xinhua.cn和我的http://www.baidu.com及http://172.18.10.114/netsail/bsoa-new.nsf/homepage?openform";
    var reg = /((http:\/\/)?(\w+\.)+(\w)+((\/[\w-\.\?\%\&\=]*)+|(?=[\u00a0-\uffff])))/mg;
    var res = s.match(reg);找到后面跟/或者汉字的字符,勉强可以满足LZ的要求。
    但我想这不是很好的解决办法。还是举张先删除方式。
    另外,如果上面正则表达式如加匹配参数i,即变成/img,会导致错误。未知何故。
      

  7.   

    正则不好,只能想到这个笨方法。
    var s = '有一个字符串http://www.xinhua.cn和我的http://www.baidu.com及http://172.18.10.114/netsail/bsoa-new.nsf/homepage?openform;';
    alert(s.replace(
    /((\[url])?(http:\/\/)?(\w+\.)+\w+(\/[\w- ./?%&=]*)?)/img, 
    function($0, $1, $2) {
    return ($1.indexOf('[url]') >= 0)? $1 : '<a href="'+ $1 +'">'+ $1 +'</a>'
    }));