const regex = /(?P<srx_eventType>RT_FLOW_.+):\s\w+\s\w+\s(?P<srx_sourceIP>\d+\.\d+\.\d+\.\d+)\/(?P<srx_sourcePort>\d+)->(?P<srx_destinationIP>\d+\.\d+\.\d+\.\d+)\/(?P<srx_destinationPort>\d+)\s0x0\s(?P<srx_Application>\S+)\s(?:\d\(\d\))?(?:\d+\.\d+\.\d+\.\d+\/\d+->\d+\.\d+\.\d+\.\d+\/\d+\s0x0\s)?(?:(?:N\/A\s)+)?(?:(?P<srx_natType>[a-z]+)\srule\s(?P<srx_natRule>\S+)\s)?(?:(?:N\/A\s)+)?(?:\d+)?\s(?P<srx_policyName>\S+)\s(?P<srx_zoneIn>\S+)\s(?P<srx_zoneOut>\S+)\s(?:(?:UNKNOWN UNKNOWN)|(?:\d+))\sN\/A\(N\/A\)\s(?P<srx_interfaceIn>\S+)/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?P<srx_eventType>RT_FLOW_.+):\\s\\w+\\s\\w+\\s(?P<srx_sourceIP>\\d+\\.\\d+\\.\\d+\\.\\d+)\\\/(?P<srx_sourcePort>\\d+)->(?P<srx_destinationIP>\\d+\\.\\d+\\.\\d+\\.\\d+)\\\/(?P<srx_destinationPort>\\d+)\\s0x0\\s(?P<srx_Application>\\S+)\\s(?:\\d\\(\\d\\))?(?:\\d+\\.\\d+\\.\\d+\\.\\d+\\\/\\d+->\\d+\\.\\d+\\.\\d+\\.\\d+\\\/\\d+\\s0x0\\s)?(?:(?:N\\\/A\\s)+)?(?:(?P<srx_natType>[a-z]+)\\srule\\s(?P<srx_natRule>\\S+)\\s)?(?:(?:N\\\/A\\s)+)?(?:\\d+)?\\s(?P<srx_policyName>\\S+)\\s(?P<srx_zoneIn>\\S+)\\s(?P<srx_zoneOut>\\S+)\\s(?:(?:UNKNOWN UNKNOWN)|(?:\\d+))\\sN\\\/A\\(N\\\/A\\)\\s(?P<srx_interfaceIn>\\S+)', 'g')
const str = `Jul 5 15:25:01 10.151.18.1 Jul 5 20:25:01 srx21 RT_FLOW: RT_FLOW_SESSION_DENY: session denied 136.62.186.217/62724->96.47.223.17/445 0x0 junos-smb-session 6(0) default-drop Outside DMZ UNKNOWN UNKNOWN N/A(N/A) reth0.0 UNKNOWN policy deny
Jul 6 14:16:13 10.151.18.1 Jul 6 19:16:12 srx21 RT_FLOW: RT_FLOW_SESSION_CREATE: session created 10.151.10.61/48040->10.151.150.18/8080 0x0 None 10.151.10.61/48040->10.151.150.18/8080 0x0 N/A N/A N/A N/A 6 DMZ-Trust_any DMZ Trust 1858740 N/A(N/A) reth2.10 UNKNOWN UNKNOWN UNKNOWN
Jul 6 14:16:13 10.151.18.1 Jul 6 19:16:12 srx21 RT_FLOW: RT_FLOW_SESSION_CREATE: session created 10.151.150.121/34954->209.239.233.7/443 0x0 junos-https 64.17.7.244/42525->209.239.233.7/443 0x0 source rule r1 N/A N/A 6 outside-access Trust Outside 1503483 N/A(N/A) reth1.190 UNKNOWN UNKNOWN UNKNOWN
Jul 6 14:16:13 10.151.18.1 Jul 6 19:16:12 srx21 RT_FLOW: RT_FLOW_SESSION_CREATE: session created 73.152.202.193/47878->64.17.7.246/53 0x0 junos-dns-udp 73.152.202.193/47878->10.151.10.64/53 0x0 N/A N/A static rule external-dns 17 external-dns Outside DMZ 1200031 N/A(N/A) reth0.0 UNKNOWN UNKNOWN UNKNOWN
Jul 6 17:10:13 10.151.18.1 Jul 6 22:10:12 srx21 RT_FLOW: RT_FLOW_SESSION_CREATE: session created 66.87.85.217/16879->96.47.221.72/443 0x0 junos-https 66.87.85.217/16879->10.151.10.66/443 0x0 N/A N/A destination rule websites-221 6 webtraffic-in Outside DMZ 931704 N/A(N/A) reth0.0 UNKNOWN UNKNOWN UNKNOWN
`;
// 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