const regex = /((?:[\t ]*(?:R|RE|F|FW|FWD):[\t ]*)*)(.*)/gmi;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('((?:[\\t ]*(?:R|RE|F|FW|FWD):[\\t ]*)*)(.*)', 'gmi')
const str = `RE: RE:Fw: RE:FW: FWD: re: This is a message from a long thread re: asdf
Refund issued: Combination Padlock Lock Gym, School Locker, Sheds, Toolboxes Various Colours
Re: abc123 sent a message about Galvanised U Nails Netting Fencing Staples Chicken Wire Mesh Fences #123123123123
Request #0123456789: Buyer received a refund
Re: johndoe has sent a question about item #456456456456, ending on 03-Mar-19 05:48:20 GMT - Combination Padlock Lock Gym, School Locker, Sheds, Toolboxes Various Colours`;
// 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