const regex = new RegExp('(?<timestamp_utc>\\d\\d\\d\\d\\-\\d\\d\\-\\d\\d\\s\\d\\d\\:\\d\\d\\:\\d\\d)\\s[^\\s]+\\sPOST\\s\\/RDWeb\\/Pages\\/[^\\/]+\\/login\\.aspx\\s[^\\s]+\\s[0-9]+\\s-\\s(?<ipaddress>[^\\s]+).*\\s200\\s[^\\n]+\\n', 'gmi')
const str = `2023-03-20 05:43:20 1.2.3.4 POST /RDWeb/Pages/en-US/login.aspx - 443 - 2.3.4.5 Mozilla/5.0+(Macintosh;+Intel+Mac+OS+X+10_15_7)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/109.0.0.0+Safari/537.36 https://your.rdsserver.org.uk/RDWeb/webclient/ 200 0 0 15
2023-03-20 15:33:46 1.2.3.4 POST /RDWeb/Pages/en-US/login.aspx ReturnUrl=%2FRDWeb%2FPages%2Fen-US%2FDefault.aspx 443 - 2.3.4.5 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/111.0.0.0+Safari/537.36 https://your.rdsserver.org.uk/RDWeb/Pages/en-US/login.aspx?ReturnUrl=/RDWeb/Pages/en-US/Default.aspx 200 0 0 2265
2024-03-15 00:04:49 1.2.3.4 POST /RDWeb/Pages/en-US/login.aspx - 443 - 36.133.118.254 node-fetch/1.0+(+https://github.com/bitinn/node-fetch) - 200 0 0 763
2024-03-21 02:47:46 1.2.3.4 POST /RDWeb/Pages/en-US/login.aspx - 443 - 41.185.8.146 - - 200 0 0 391
`;
// 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