const regex = /(?-is:<li style=|(?!\A)\G).*?\K(?i)(\b[a-z]{12,}\b)/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?-is:<li style=|(?!\\A)\\G).*?\\K(?i)(\\b[a-z]{12,}\\b)', 'gm')
const str = `<div class=“right”>
<ol>
<li style=“padding: 0px; list-style-type: decimal; list-style-image: none; list-style-position: outside; font-family: “verdana”; font-size: 18px; color: black;”><div class=“marginleft”>Haemorrhoids <br>- piles</div></li>
<li style=“padding: 0px; list-style-type: decimal; list-style-image: none; list-style-position: outside; font-family: “verdana”; font-size: 18px; color: black;”><div class=“marginleft”>Haemorrhoids<br>-piles</div></li>
<li style=“padding: 0px; list-style-type: decimal; list-style-image: none; list-style-position: outside; font-family: “verdana”; font-size: 18px; color: black;”><div class=“marginleft”>Offensive haemorrhages</div></li>
<li style=“padding: 0px; list-style-type: decimal; list-style-image: none; list-style-position: outside; font-family: “verdana”; font-size: 18px; color: black;”><div class=“marginleft”>CONSCIOUSNESS of womb. Hysterically inclined.</div></li>
</ol>`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions