const regex = /(?>\<\!--begin(?<type>\w+)--\>)(?<embed>.+)(?>\<\!--end(?>\1)--\>)/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?>\\<\\!--begin(?<type>\\w+)--\\>)(?<embed>.+)(?>\\<\\!--end(?>\\1)--\\>)', 'gm')
const str = `<p><!--beginTweet--></p><blockquote class="twitter-tweet"><p dir="ltr" lang="en">The <a href="https://twitter.com/hashtag/SeaKraken?src=hash&ref_src=twsrc%5Etfw">#SeaKraken</a> & <a href="https://twitter.com/ClimateArena?ref_src=twsrc%5Etfw">@ClimateArena</a> will require all guests, ages 12+, attending Kraken games, concerts & events at Climate Pledge Arena to provide proof of vaccination to keep fans, staff, players & artists safe.<br><br>More info → <a href="https://t.co/f2EmV5cXd0">https://t.co/f2EmV5cXd0</a> <a href="https://t.co/wJY9ElJ0DQ">pic.twitter.com/wJY9ElJ0DQ</a></p>— Seattle Kraken (@SeattleKraken) <a href="https://twitter.com/SeattleKraken/status/1435273531256885255?ref_src=twsrc%5Etfw">September 7, 2021</a></blockquote><p><!--endTweet--></p>
<!--beginFart-->df<!--endFart-->`;
// 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