Regexp. Что я упускаю?

Доброго вечера!
Пытаюсь html распарсить регой, но почему то в группу попадают символы, которых там не должно быть.
Что исправить?
/>(.*?)</gi
А строка обычный кусочек html.
Хочу забрать всё между > и <
Делаю вот так:
let match =  string.match(/>(.*?)</gi);
match.forEach(e => {
    console.log(e);
})

Спасибо!
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
slavikse
@slavikse Автор вопроса
Мое решение самое адекватное для мое задачи :)
(.*?)</gi/>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
romy4
@romy4
Exception handler
не делайте (.*?)
делайте ([^<]*)
Ответ написан
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Очень странно, что вы никогда не слышали о том, что регулярка - это не инструмент для парсинга HTML. Не нужно пытаться "разбортировать колесо расческой".
var htmlString = `
<div id="wrapper">
    <div class="div">Div 1</div>
    <div class="div">Div 2</div>
    <div class="div">Div 3</div>
    <p class="paragraph">P 1</p>
    <p class="paragraph">P 2</p>
    <p class="paragraph">P 3</p>
</div>
`;

// Вариант 1
var parser = new DOMParser(),
    doc = parser.parseFromString(htmlString, 'text/html');
[].forEach.call(doc.querySelectorAll('body *'), function(el){
	console.log(el);
});
// Вариант 2
var tmp = document.createElement('div');
tmp.innerHTML = htmlString;
[].forEach.call(tmp.querySelectorAll('*'), function(el){
	console.log(el);
});

Пример в песочнице
Ответ написан
coderisimo
@coderisimo Куратор тега JavaScript
вам нужно предусмотреть все комбинации символов которые вам нужны.
например, есть же перевод строки или пробелы.
а если так?

/>((.*?)|(\s+?))</gi
Ответ написан
Ваш ответ на вопрос

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

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