Javascript 正则表达式从字符串中查找并替换特定元素
我需要一些帮助 我有来自Javascript 正则表达式从字符串中查找并替换特定元素,javascript,regex,html,Javascript,Regex,Html,我需要一些帮助 我有来自innerHTMLdiv的字符串 <div class="class-1"> <div class="class-1"> <div class="class-bla-bla class-find">Replace this div</div> <div class="class-another">Hello World!</div> </div>
innerHTML
div的字符串
<div class="class-1">
<div class="class-1">
<div class="class-bla-bla class-find">Replace this div</div>
<div class="class-another">Hello World!</div>
</div>
<div class="class-2">
<div class="class-2 class-find">Replace this div</div>
<div class="class-no-replace">No replace</div>
</div>
<div class="class-somthing class-find">Replace this div</div>
</div>
替换这个div
你好,世界!
替换这个div
无可替代
替换这个div
我想使用正则表达式查找所有元素,并用类名class find
替换所有元素,并将innerHTML字符串存储到数据库中,而不改变实际的HTML DOM,我试图找到解决方案,但我找不到任何适合我的情况的好答案,请帮我解决这个问题
注意:我发现了一些示例正则表达式,只有当元素只有一个类而不是多个类时,这才有效。因为正则表达式不是用来解析HTML的。为此,您可以使用
DOMParser
API
let d=new DOMParser();
让我们=`
替换这个div
你好,世界!
替换这个div
无可替代
替换这个div
`;
让doc=d.parseFromString(s'text/html');
让divs=doc.querySelectorAll('.class find');
设html=[];
divs=divs.forEach(e=>{
html.push(e.innerHTML);
});
log(html)代码>为什么不改用标准DOM操作,比如使用querySelector
?最好不要尝试用正则表达式解析非平凡的HTML。请不要为此使用正则表达式。JavaScript是一种高效的HTML解析器,请使用它。然后使用DOMParser
并继续使用DOM操作方法。也许您需要更好地解释您的问题/您希望做什么,因为“我希望将替换的字符串存储到db中,但不更改实际的DOM HTML视图”不是在DOM操作上使用正则表达式的有效原因。没有任何正则表达式可以做DOM操作做不到的事情。但是有很多DOM操作是regex做不到的。使用regex刮取html内容并替换某些内容也是DOM操作——只是不能使用内置的DOM操作方法!