正则表达式从字符串中查找并替换特定元素

时间:2018-04-28 04:45:10

标签: javascript regex html5

我需要一些帮助

我的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>

我希望使用正则表达式来查找和替换所有元素class name class-find并将innerHTML字符串存储到数据库而不更改实际的HTML DOM,我试图找到解决方案,但我找不到任何好的答案我的情况,请帮我解决这个问题。

注意:我找到了一些示例正则表达式https://www.regextester.com/93456,这只适用于元素只有一个不是多个的类。

1 个答案:

答案 0 :(得分:1)

因为正则表达式不是要解析HTML。您可以使用DOMParser API来实现此目的。

&#13;
&#13;
let d = new DOMParser();
let s = `<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>`;
let doc = d.parseFromString(s, 'text/html');
let divs = doc.querySelectorAll('.class-find');
let html = [];
divs = divs.forEach(e => {
  html.push(e.innerHTML);
});
console.log(html);
&#13;
&#13;
&#13;