const regex = new RegExp('<div\\s+class="asd"> # match an opening \\'div\\' with an id that starts with \\'t\\' and some digits
[^<>]* # match zero or more chars other than \\'<\\' and \\'>\\'
( # open group 1
<div[^>]*> # match an opening \\'div\\'
(?: # open a non-matching group
[^<>]* # match zero or more chars other than \\'<\\' and \\'>\\'
| # OR
(?1) # recursively match what is defined by group 1
)* # close the non-matching group and repeat it zero or more times
</div> # match a closing \\'div\\'
) # close group 1
[^<>]* # match zero or more chars other than \\'<\\' and \\'>\\'
</div> ', 'msi')
const str = `<div>
<div class="asd">
<div>
<div>
Hello
</div>
</div>
</div>
</div>`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
if ((m = regex.exec(str)) !== null) {
// 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