@Mo1she

С помощью регулярного выражения получить массив, элементами которого будут являться все найденные теги p?

У менять есть строка:
let str = '<h1>Я</h1>\n<p>Помню</p>\n<h1>Чудное</h1>\n<p>Мгновенье</p>';


Чтобы получить массив, элементами которого будут являться все найденные теги p я делаю следующее:
let result = str.match(/<p>([\s\S]*)<\/p>/g);

Но в итоге получаю массив, состоящий из одного элемента - ['<p>Помню</p>↵<h1>Чудное</h1>↵<p>Мгновенье</p>'];

А желаемый результат - ['<p>Помню</p>', '<p>Мгновенье</p>'];

Как мне добиться желаемого (обязательно учитывая переносы строк).
  • Вопрос задан
  • 69 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
https://habr.com/post/68345/
Читайте при жадные и нежадные квантификаторы.

P.S. А ещё можно воспользоваться средствами самого браузера
let str = '<h1>Я</h1>\n<p>Помню</p>\n<h1>Чудное</h1>\n<p>Мгновенье</p>';
let div = document.createElement('div');
div.innerHTML = str;
let ps = div.getElementsByTagName('p');
Ответ написан
Комментировать
@Mo1she Автор вопроса
Просто добавь знак вопроса после звёздочки в своём шаблоне...
let result = str.match(/<p>([\s\S]*?)<\/p>/g);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы