Regex найти и заменить определенный элемент из строки - PullRequest
0 голосов
/ 28 апреля 2018

Мне нужна помощь

У меня есть строка из моего 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 голосов
/ 28 апреля 2018

Поскольку регулярное выражение не предназначено для анализа HTML. Для этой цели вы можете использовать DOMParser API.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...