本帖最后由 6rl 于 2011-11-17 17:16:45 编辑

解决方案 »

  1.   

     var str = '<p><a href="0">主页</a>&gt;<a href="A101">新页面1</a><a href="aa/A101">新页面1</a></p>';            var reg = /(href=\")[^<>\/]+?[\/]/;
                var newstr = str.replace(reg, "$1");
                alert(newstr);
    //输出:<p><a href="0">主页</a>&gt;<a href="A101">新页面1</a><a href="A101">新页面1</a></p>
      

  2.   

    这种就不适用了:多个斜杠。<p>
    <a href="0">主页</a>&gt;<a href="A101">新页面1</a><a href="aaa/A101">新页面1</a><a href="http://aaa/A101">新页面1</a>
    </p>
      

  3.   

    <!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>
    <p>
        <a href="0">主页</a>&gt;<a href="A101">新页面1</a><a href="aaa/A101">新页面1</a><a href="http://aaa/A101">新页面1</a>
    </p>
    <script>
    var as = document.getElementsByTagName('a');
    for(var i = 0; i < as.length; i++){
    var href = as[i].getAttribute('href');
    href = href.replace(/\/+/g, '');
    as[i].setAttribute('href', href);
    }
    </script>
    </body>
    </html>
      

  4.   

    <!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>
    <p>
        <a href="0">主页</a>&gt;<a href="A101">新页面1</a><a href="aaa/A101">新页面1</a><a href="http://aaa/A101">新页面1</a>
    </p>
    <script>
    var as = document.getElementsByTagName('a');
    for(var i = 0; i < as.length; i++){
    var href = as[i].getAttribute('href');
    href = href.replace(/.*\/+/g, '');
    as[i].setAttribute('href', href);
    }
    </script>
    </body>
    </html>
      

  5.   

    直接href.split("/")[1]不就行了吗,为什么非要用正则?
      

  6.   

    目的是去掉字符串的href中最后一个斜杠前面的内容(包括最后的斜杠)。不用正则行吗?
      

  7.   


    三楼正确理解我意图:是javascript字符串操作,不是dom操作。
    我自己又写了一个,不知道考虑是否周全,望各位大大指点。        var htmlContent = /'<p><a href="0">主页</a>&amp;gt;<a href="A101">新页面1</a><a href="aa/A101">新页面1</a><a href="http://www.abc.com/aa/A101">新页面1</a></p>/ig
    var pattern = /(href=")([^"]*)(?=\/)\/(.+?)(")/ig;
    htmlContent = htmlContent.replace(pattern,"$1$3$4");
      

  8.   

    我只能说不是太好用,如果要是再有一个斜杠呢!?难道你再加一级?!我刚才我又写了一个,不过现在断网,我现在用的是手机!流量大大的浪费了,就为了给你一个满意的答案!看:/(href=\")([^<>]+?[\/]+){1,}/
      

  9.   


    var href = "aa/bb/cc/dd/A101";
    var arr = href.split("/");
    href = arr[arr.length-1];
      

  10.   

    我想了个法,你试试
    var str=/href="[^"]*"/gi;
    str1=str.lastIndexOf("/");
    str2=str.substring(str+1);
    str=str.replece(/(href=")[^"]*"/gi,"&1str2");
      

  11.   

    一行split就可以搞定的事,为什么都非要用正则,不解.....
      

  12.   

    var html='your html';
    var reg=/(<a[^>]*?href=(['\"\s]?))([^'\"]+)\/(?=[^\/]+\2)/gi;
    html=html.replace(reg,'$1');
      

  13.   


    到底是我不对题,还是你根本没看别人的代码呢?
    不就去除/前面的吗,难道我这样就不行?
    <!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>
        <p>
            <a href="0">主页</a>&gt;
    <a href="A101">新页面1</a>
    <a href="aaa/A101">新页面1</a>
    <a href="http://aaa/A101">新页面1</a>
        </p>
        <script>
            var as = document.getElementsByTagName('a');
            for(var i = 0; i < as.length; i++){
    var href = as[i].getAttribute('href');
    var arr = href.split("/");
    href = arr[arr.length-1];
    as[i].setAttribute('href', href);
    }

    for(var i = 0; i < as.length; i++){
    console.log(as[i].getAttribute('href'));
    }
        </script>
    </body>
    </html>就算你全不是dom,是字符串,你不能自己转换一下吗?[code=HTML]
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cn">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
    <title></title>
    </head>
    <body>
    <script type="text/javascript">

    var str = '<a href="0">主页</a>&gt;<a href="A101">新页面1</a><a href="aaa/A101">新页面1</a><a href="http://aaa/A101">新页面1</a>';

    var obj = document.createElement("div");
    obj.innerHTML = str;

    var as = obj.getElementsByTagName('a');
    for(var i = 0; i < as.length; i++){
    var href = as[i].getAttribute('href');
    var arr = href.split("/");
    href = arr[arr.length-1];
    as[i].setAttribute('href', href);
    }

    for(var i = 0; i < as.length; i++){
    console.log(as[i].getAttribute('href'));
    }

    </script>
    </body>
    </html>技术是给人服务的,不要一味的追求技术,能用简单的方法就可以用简单的,再说你用正则来replace那么多的字符串,效率不知道有多慢。[/code]
      

  14.   

    var str = '<p><a href="0">主页</a>&amp;gt;<a href="A101">新页面1</a><a href="aa/A101">新页面1</a></p>';
    var linkElments = str.match(/<a\s+.*?<\/a>/g);
    var reg = /(<a\s+(?:[^\<\>]+\s+)*?href=)([\'\"])(.+?)(\2.*?\>)/ig;
    str = str.replace(reg, function(){
    var args = arguments;
    args[3] = args[3].replace(/^.*?\/+(?=[^\/]*$)/, "");
    return args[1]+args[2]+args[3]+args[4];
    });
    alert(str);
      

  15.   

    还有一种更简单的方式 var str = '<p><a href="0">主页</a>&amp;gt;<a href="A101">新页面1</a><a href="http:// aa/A101">新页面1</a></p>';
    var elem_buff = document.createElement('div');
    elem_buff.innerHTML = str;
    var as = elem_buff.getElementsByTagName('a');
            for(var i = 0; i < as.length; i++){
                var href = as[i].getAttribute('href');
                href = href.replace(/^.*?\/+(?=[^\/]*$)/, '');
                as[i].setAttribute('href', href);
            }
            alert(elem_buff.innerHTML);