const regex = /(?'gPatSyslogPRI'<\d+>)
(?'gPatMesgBody'.*)
(?'gPatMesgBodyMin'.*?)
(?'gPatSyslogNGHeader'\w{3}\s+\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}\s\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
(?'gPatMon'Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|\d{1,2})
(?'gPatMonNum'\d{1,2})
(?'gPatDay'\d{1,2})
(?'gPatTime'\d{1,2}:\d{1,2}:\d{1,2})
(?'gPatYear'\d{2,4})
(?'gPatMSec'\d{1,3})
(?'gPatTimeMSec'\d{1,2}:\d{1,2}:\d{1,2}\.\d{1,3})
(?'gPatTimeZone'Z|UTC|[+-]\d{1,2}:?\d{2})
(?'gPatWeekday'Mon|Tue|Wed|Thu|Fri|Sat|Sun)
(?'gPatIpV4Dot'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
(?'gPatIpAddr'[0-9A-Fa-f]{0,4}(?::[0-9A-Fa-f]{0,4}){1,5}:(?:\d{1,3}(?:\.\d{1,3}){3}|[0-9A-Fa-f]{0,4}(?::[0-9A-Fa-f]{0,4})?)|\d{1,3}(?:\.\d{1,3}){3})
(?'gPatIpPort'\d{1,5})
(?'gPatProto'ftp|icmp|tcp|udp|http|ip|smb|smtp|snmp|others|FTP|ICMP|UDP|TCP|HTTP|IP|SMB|SMTP|SNMP|OTHERS)
(?'gPatFqdn'\w+[.\w+]+)
(?'gPatWord'\w+)
(?'gPatStr'[^\s]*)
(?'gPatHostName'[\w.-]+)
(?'gPatStrComma'[^,]*)
(?'gPatStrLeftParen'[^\(]*)
(?'gPatStrRightSB'[^\]]*)
(?'gPatInt'\d+)
(?'gPatSpace'\s+)
(?'gPatStrEndColon'[^:]*)
(?'gPatStrSQ'[^']*)
(?'gPatStrDQ'[^']*)
(?'gPatSentence'\w[\s+\w]*)/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?\'gPatSyslogPRI\'<\\d+>)
(?\'gPatMesgBody\'.*)
(?\'gPatMesgBodyMin\'.*?)
(?\'gPatSyslogNGHeader\'\\w{3}\\s+\\d{1,2}\\s\\d{1,2}:\\d{1,2}:\\d{1,2}\\s\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})
(?\'gPatMon\'Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|\\d{1,2})
(?\'gPatMonNum\'\\d{1,2})
(?\'gPatDay\'\\d{1,2})
(?\'gPatTime\'\\d{1,2}:\\d{1,2}:\\d{1,2})
(?\'gPatYear\'\\d{2,4})
(?\'gPatMSec\'\\d{1,3})
(?\'gPatTimeMSec\'\\d{1,2}:\\d{1,2}:\\d{1,2}\\.\\d{1,3})
(?\'gPatTimeZone\'Z|UTC|[+-]\\d{1,2}:?\\d{2})
(?\'gPatWeekday\'Mon|Tue|Wed|Thu|Fri|Sat|Sun)
(?\'gPatIpV4Dot\'\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})
(?\'gPatIpAddr\'[0-9A-Fa-f]{0,4}(?::[0-9A-Fa-f]{0,4}){1,5}:(?:\\d{1,3}(?:\\.\\d{1,3}){3}|[0-9A-Fa-f]{0,4}(?::[0-9A-Fa-f]{0,4})?)|\\d{1,3}(?:\\.\\d{1,3}){3})
(?\'gPatIpPort\'\\d{1,5})
(?\'gPatProto\'ftp|icmp|tcp|udp|http|ip|smb|smtp|snmp|others|FTP|ICMP|UDP|TCP|HTTP|IP|SMB|SMTP|SNMP|OTHERS)
(?\'gPatFqdn\'\\w+[.\\w+]+)
(?\'gPatWord\'\\w+)
(?\'gPatStr\'[^\\s]*)
(?\'gPatHostName\'[\\w.-]+)
(?\'gPatStrComma\'[^,]*)
(?\'gPatStrLeftParen\'[^\\(]*)
(?\'gPatStrRightSB\'[^\\]]*)
(?\'gPatInt\'\\d+)
(?\'gPatSpace\'\\s+)
(?\'gPatStrEndColon\'[^:]*)
(?\'gPatStrSQ\'[^\']*)
(?\'gPatStrDQ\'[^\']*)
(?\'gPatSentence\'\\w[\\s+\\w]*)', 'gm')
const str = ``;
// 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