字符串为:<div class="aaa">1111111111</div>
<div class="aaa"><a href="#"><img src="http://www.baidu.com/img/baidu_sylogo1.gif" /></a></div>
<a href="#">111111111111<img src="http://www.baidu.com/img/baidu_sylogo1.gif" />22222222222</a>
<a href="#asdfasdf">111111111111<br/>22222222>222222</a>
<a href="#"><b>111111<11111111</b>2222222>>22222222222222</a>
<dl class="aaa">
<dt>
aa3234>aaaaaa<人遥aaaaaaa
</dt>
<dd>
bbbbbbbbbbbbbbb
</dd>
</dl>通过正则匹配结果为
1111111111
111111111111
22222222222
111111111111<br/>22222222>222222
111111<11111111
2222222>>22222222222222
aa3234>aaaaaa<人遥aaaaaaa
bbbbbbbbbbbbbbb
就是把所有标签里的文字内容匹配出来。但有几个难点,<br/>不匹配,在文字中会含有>或<

解决方案 »

  1.   

    建议用JQuery,// 这里的标签自己写吧, 看你的也不多, 如果还有,可以多加, $.each($("div, a, img, dl, dt"), function (){    $(this).replaceWith($(this).text());});
      

  2.   


    <script>
    var str = '\
    <div class="aaa">1111111111</div>\
    <div class="aaa"><a href="#"><img src="http://www.baidu.com/img/baidu_sylogo1.gif" /></a></div>\
    <a href="#">111111111111<img src="http://www.baidu.com/img/baidu_sylogo1.gif" />22222222222</a>\
    <a href="#asdfasdf">111111111111<br/>22222222>222222</a>\
    <a href="#"><b>111111<11111111</b>2222222>>22222222222222</a>\
    <dl class="aaa">\
    <dt>\
    aa3234>aaaaaa<人遥aaaaaaa\
    </dt>\
    <dd>\
    bbbbbbbbbbbbbbb\
    </dd>\
    </dl>\
    ';alert(str.replace(/(<(?!\bbr\/?\b)[^<>]+>)+/g, "\n"))</script>
      

  3.   

    有那么难吗?我用jquery帮你匹配了一下
    <script type='text/javascript'>
    $(function(){
    alert($("body *").text())
    });
    </script>
    </head><body>
    <div class="aaa">1111111111</div>
    <div class="aaa"><a href="#"><img src="http://www.baidu.com/img/baidu_sylogo1.gif" /></a></div>
    <a href="#">111111111111<img src="http://www.baidu.com/img/baidu_sylogo1.gif" />22222222222</a>
    <a href="#asdfasdf">111111111111<br/>22222222>222222</a>
    <a href="#"><b>111111<11111111</b>2222222>>22222222222222</a>
    <dl class="aaa">
    <dt>
    aa3234>aaaaaa<人遥aaaaaaa
    </dt>
    <dd>
    bbbbbbbbbbbbbbb
    </dd>
    </dl>
    </body>
      

  4.   

    给的是字符串,不是DOM节点,所以只能用正责,JQUER没什么用处的。也就是在任何情况下,要用正则匹配出所以最小节点中的内容。而且如果节点中有<br/>字符串也同样当作内容匹配。字符串中可能会有更复杂的情况出现,如< div  class="323"  >内容<内>容<br/>内容>内<容</div>
      

  5.   


    三楼的这个法子也不太行,你是把HTML标签给清空了,我需要的是用正则把内容匹配到数组里,这所有独立的内容都还要做二次编辑,然后才放回去的。
      

  6.   

    给个建议, 
    如果是在页面中, 还是jquery创建一个<div class="test"> 
    将你的字符串放在此div中, $(".test").html(你的字符串);先替换标签用jquery提取文体内容,$.each($(".test div, .test a, .test img, .test dl, .test dt"), function (){   $(this).replaceWith($(this).text());});然后再返回
    var str = $(".test").html();当然再清空那个div
    $(".test").remove();
      

  7.   


    <script>
    var str = '\
    <div class="aaa">1111111111</div>\
    <div class="aaa"><a href="#"><img src="http://www.baidu.com/img/baidu_sylogo1.gif" /></a></div>\
    <a href="#">111111111111<img src="http://www.baidu.com/img/baidu_sylogo1.gif" />22222222222</a>\
    <a href="#asdfasdf">111111111111<br/>22222222>222222</a>\
    <a href="#"><b>111111<11111111</b>2222222>>22222222222222</a>\
    <dl class="aaa">\
    <dt>\
    aa3234>aaaaaa<人遥aaaaaaa\
    </dt>\
    <dd>\
    bbbbbbbbbbbbbbb\
    </dd>\
    </dl>\
    ';var arr = str.split(/(?:<(?!\bbr\b)[^<>]+>)+/gi).slice(1,this.length-1);alert(arr.join("\n"))
    </script>
      

  8.   

    下面的情况怎么算?<aaa>bbb<aaa>或者<aaa>bbb</aaa>或者<aaa/>
    CPI环比<0,同比>0
      

  9.   

    LZ的字符串结构,混淆了HTML代码最基本的定界符“<”、“>”界定规则,正则处理唯一可利用的规律仅仅为宽泛的大结构本身——闭合标签“<.....>”与innerTxt文字相间嵌套。所以,要提取所说的“文字”,要么replace删除掉闭合标签,要么split分割闭合标签。前者得到的还是字符串,后者能够装入数组,但需要删除首尾空元素。
    前者:str.replace(/<(?!\bbr\b)[^<>]+>/gi, "")
    后者:str.split(/(?:\s*<(?!\bbr\b)[^<>]+>\s*)+/gi).slice(1, this.length-1)
    <script>
    var str = '\
    <div class="aaa">1111111111</div>\
    <div class="aaa"><a href="#"><img src="http://www.baidu.com/img/baidu_sylogo1.gif" /></a></div>\
    <a href="#">111111111111<img src="http://www.baidu.com/img/baidu_sylogo1.gif" />22222222222</a>\
    <a href="#asdfasdf">111111111111<br/>22222222>222222</a>\
    <a href="#"><b>111111<11111111</b>2222222>>22222222222222</a>\
    <dl class="aaa">\
    <dt>\
    aa3234>aaaaaa<人遥aaaaaaa\
    </dt>\
    <dd>\
    bbbbbbbbbbbbbbb\
    </dd><aaa>bbb<aaa>或者<aaa>bbb</aaa>或者<aaa/>\
    </dl>\
    ';alert(str.replace(/<(?!\bbr\b)[^<>]+>/gi, "")); //前者alert(str.split(/(?:\s*<(?!\bbr\b)[^<>]+>\s*)+/gi).slice(1,this.length-1).join("\n")); //后者</script>