const regex = />(?P<Time>.*)\s+(?P<DeviceIPAddress>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})\s+date=(?P<Date>.*)\s+time=(?:\d+\W+\d+\W+\d+)\s+devname=(?<DeviceName>.*)\s+devid=(?P<DeviceID>\w+)\s+logid=(?:\d+)\s+type=(?P<LogType>\w+)\s+subtype=(?P<SubType>\w+)\s+level=(?P<Status>\w+)\s+vd=(?P<User>\w+)\s+logdesc=[\W+](?P<Message>.*)[\W+]\s+session_id=(?P<Session_ID>\w+)\s+policyid=(?:\d+)\s+srcip=(?P<SourceIP>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})\s+srcport=(?P<SourcePort>\d+)\s+dstip=(?P<DestinationIP>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})\s+dstport=(?P<DestinationPort>\d+)\s+action=(?P<Action>\w+)\s+alert=(?:\d+)\s+desc=[\W+](?P<Description>.*)[\W+]\s+msg=[\W+](?P<msg>.*)[\W+]/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('>(?P<Time>.*)\\s+(?P<DeviceIPAddress>\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3})\\s+date=(?P<Date>.*)\\s+time=(?:\\d+\\W+\\d+\\W+\\d+)\\s+devname=(?<DeviceName>.*)\\s+devid=(?P<DeviceID>\\w+)\\s+logid=(?:\\d+)\\s+type=(?P<LogType>\\w+)\\s+subtype=(?P<SubType>\\w+)\\s+level=(?P<Status>\\w+)\\s+vd=(?P<User>\\w+)\\s+logdesc=[\\W+](?P<Message>.*)[\\W+]\\s+session_id=(?P<Session_ID>\\w+)\\s+policyid=(?:\\d+)\\s+srcip=(?P<SourceIP>\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3})\\s+srcport=(?P<SourcePort>\\d+)\\s+dstip=(?P<DestinationIP>\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3})\\s+dstport=(?P<DestinationPort>\\d+)\\s+action=(?P<Action>\\w+)\\s+alert=(?:\\d+)\\s+desc=[\\W+](?P<Description>.*)[\\W+]\\s+msg=[\\W+](?P<msg>.*)[\\W+]', 'gm')
const str = `<187>Oct 18 16:24:11 10.76.103.254 date=2020-10-18 time=16:18:44 devname=JAIPUR-FGT60D devid=FGT60D4615072349 logid=0105048038 type=event subtype=wad level=error vd=root logdesc="SSL Fatal Alert received" session_id=3eb37145 policyid=0 srcip=222.186.136.150 srcport=54221 dstip=59.111.181.52 dstport=443 action=receive alert=2 desc="bad certificate" msg="SSL Alert received"`;
// 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