字符串为:<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/>不匹配,在文字中会含有>或<
<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/>不匹配,在文字中会含有>或<
<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>
<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>
三楼的这个法子也不太行,你是把HTML标签给清空了,我需要的是用正则把内容匹配到数组里,这所有独立的内容都还要做二次编辑,然后才放回去的。
如果是在页面中, 还是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();
<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>
CPI环比<0,同比>0
前者: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>