Как сохранить html теги в виде массива? - PullRequest
1 голос
/ 08 февраля 2020

Я хочу сохранить все свои HTML теги в массив, например:

Var a = '<p> hi</p> <h2>hello</h2>'

Результат как:

result = [
  0:"<p> hi</p>"
  1:"<h2>hello</h2>"
]

Ответы [ 2 ]

2 голосов
/ 08 февраля 2020

Я получил решение, но оно не на 100% идеально. Проверьте этот код, я извлек дочерние элементы html элемента div с идентификатором "demo". Вы можете отфильтровать выходной массив для удаления неопределенного и разбить элемент массива, содержащий два элемента html.

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>Testing Web</title>
  </head>
  <body>
    <div id="demo">
      <h1>I am here</h1>
      <p>I am a paragraph</p>
      <div class="div">
        <h3>I am h3 tag</h3>
      </div>
    </div>
  </body>

  <script>
    var arr = [];

    var x = document.querySelector("#demo").childNodes;
    x.forEach(element => {
      arr.push(element.outerHTML);
    });
    console.log(arr);
  </script>
</html>

вывод массива

0 голосов
/ 08 февраля 2020

В вашем примере вы можете использовать:

/
  <   // Match literal <
  >    // Match literal <
  .*?  // Match any character zero or more times, non greedy
  <\/ // Match literal </
  >    // Match literal >
/g

Ваш пример:

    var str = '<p> hi</p> <h2>hello</h2>'
    const arr = str.match(/<.*?>.*?<\/.*?>/g); // ["<p> hi</p>","<h2>hello</h2>"]
    console.log(arr);

однако я не рекомендую анализировать HTML с регулярным выражением.

увидеть больше: RegEx соответствует открытым тегам, кроме X HTML self теги

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...