const regex = new RegExp('(?:(?:^edit\\ \\"(.+)\\"$\\n)(?:^set\\ uuid\\ ([a-f0-9]{8}\\-(?:[a-f0-9]{4}\\-){3}[a-f0-9]{12})$\\n)(?:(?:^set\\ comment\\ )((?:(?!^set\\ )(?:.*$\\n))+)(?=^set\\ ))?(?:^set\\ service\\ (\\".+\\")$\\n)?(?:^set\\ extip\\ ((?:(?:\\d{1,3}\\.){3}(?:\\d{1,3}))(?:\\-(?:\\d{1,3}\\.){3}(?:\\d{1,3}))?)$\\n)(?:^set\\ extintf\\ \\"(.+)\\"$\\n)(?:^(set\\ portforward)\\ (enable)$\\n)?(?:^(set\\ color)\\ (\\d{1,2})$\\n)?(?:^set\\ mappedip\\ \\"((?:(?:\\d{1,3}\\.){3}(?:\\d{1,3}))(?:\\-(?:\\d{1,3}\\.){3}(?:\\d{1,3}))?)\\"$\\n)(?:^(set\\ protocol)\\ (.+)$\\n)?(?:^(set\\ extport)\\ (\\d{1,5}(?:\\-\\d{1,5})?)$\\n)?(?:^(set\\ mappedport)\\ (\\d{1,5}(?:\\-\\d{1,5})?)$\\n)?(?:^next$\\n(?:^$\\n)?))', 'gm')
const str = `edit "VIP [DNS сервер site.com]"
set uuid abcdef01-2345-6789-abcd-ef0123456789
set comment "Публикация IP-адреса для проекта
\\"TEST\\" в ДЦ \\"Облако\\""
set service "HTTP Webserver"
set extip 100.200.254.20
set extintf "DMZ [VLAN 100]"
set portforward enable
set color 3
set mappedip "10.100.200.5"
set protocol udp
set extport 53
set mappedport 2000-65535
next
edit "VIP [NTP сервер site.com]"
set uuid abcdef01-2345-6789-abcd-ef0123456789
set comment "Публикация IP-адреса для проекта
\\"TEST\\" в ДЦ \\"Облако\\""
set service "NTP TCP Server" "NTP UDP Server"
set extip 100.200.254.20-100.200.254.21
set extintf "DMZ [VLAN 100]"
set portforward enable
set color 3
set mappedip "10.100.200.5-10.100.200.6"
set protocol udp
set extport 123
set mappedport 1000-1999
next
`;
// 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