javascript中的正则表达式 - 获取div的内容

问题描述 投票:-1回答:1

我试图获取所有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>');
javascript regex
1个回答
1
投票

使用正则表达式解析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>
© www.soinside.com 2019 - 2024. All rights reserved.