Возможно, было бы более элегантно использовать DOMParser и взять textContent
из .-img._glyph
:
const str = `<a href="https://stackoverflow.com" class="-logo js-gps-track"
data-gps-track="top_nav.click({is_current:false, location:3, destination:8})">
<span class="-img _glyph">Stack Overflow</span>
</a>`;
console.log(
new DOMParser().parseFromString(str, 'text/html').querySelector('.-img._glyph').textContent
);
Если у вас было для использования регулярных выражений, вместо повторения .
(что соответствует чему-либо), повторите [^<>]
(что соответствует любому, что не <
или >
) по обе стороны от Stack Overflow
части, глядя вперед и назад на <
и >
:
(?<=>)[^<>]*Stack Overflow[^<>]*(?=<)
(Если вы не можете использовать lookbehind, сопоставьте начальный >
и захватите все впоследствии, затем извлеките группу захвата)