我试图获取所有div的内容,其中内容不包含除<br>
标签之外的任何html标签。
str.match(/<div>.*?<\/div>/g);
给出所有div内容,而str.match(/<div>([^<>])*<\/div>/g,);
给出没有任何html标签的div内容。
我设法得到了解决方案。我可以将所有<br>
标签转换为其他代码,然后使用str.match(/<div>([^<>])*<\/div>/g,);
并最终还原<br>
标签。我不知道这是否是一个很好的解决方案。
除了<br>
之外,是否可以使用正则表达式获取所有div内容而没有任何html标签?还是存在更好的解决方案? (最好不要使用向前看或向后看)。谢谢。
编辑:输入字符串:abcd <div>div</div> abcd <div>div with <br></div> <div>abcd div with <p> abcd</div>
在这,我喜欢匹配<div>div</div>
和<div>div with <br></div>
var str = 'abcd <div>div</div> abcd <div>div with <br></div> <div>abcd div with <p> abcd</div>';
var res = str.match(/<div>.*?<\/div>/g);
document.write('<textarea>'+res+'</textarea>');
var res = str.match(/<div>([^<>])*<\/div>/g);
document.write('<textarea>'+res+'</textarea>');
使用正则表达式解析HTML不是一个好主意,你最好使用像jQuery这样的东西。
这是一个例子:
var str = "abcd <div>div</div> abcd <div>div with <br></div> <div>abcd div with <p> abcd</div>";
var $e = $("<div></div>");
$e.html(str);
var result = $e.find("div").map(function(){
return $(this).html();
}).get().join(" ");
console.log(result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>