const regex = /(\d+)\s+(\w{2})\s*(\w{2,5})\s+(\w{5})(?:\s+|\s+(.)\s+)(\w{3})(\w{3})(?:\s+|(?:\s|\*)(\w{3})\s+)(\w{4,5})\s+(\w{4,5})(?:\s+(\w{5}))?.*(?:\n|$)??((?:.|\n)*?)(\n\s*\n)?(?=\d+\s+\w{2}\s*\w{2,5}\s+\w{5}(?:\s+|\s+.\s+)\w{3}\w{3}(?:\s+|(?:\s|\*)\w{3}\s+)\w{4,5}\s+\w{4,5}(?:\s+\w{5})?|$)/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(\\d+)\\s+(\\w{2})\\s*(\\w{2,5})\\s+(\\w{5})(?:\\s+|\\s+(.)\\s+)(\\w{3})(\\w{3})(?:\\s+|(?:\\s|\\*)(\\w{3})\\s+)(\\w{4,5})\\s+(\\w{4,5})(?:\\s+(\\w{5}))?.*(?:\\n|$)??((?:.|\\n)*?)(\\n\\s*\\n)?(?=\\d+\\s+\\w{2}\\s*\\w{2,5}\\s+\\w{5}(?:\\s+|\\s+.\\s+)\\w{3}\\w{3}(?:\\s+|(?:\\s|\\*)\\w{3}\\s+)\\w{4,5}\\s+\\w{4,5}(?:\\s+\\w{5})?|$)', 'g')
const str = ` 1 UA 990J 28OCT SFOCDG 340P 1015A 29OCT greg
2 AF1830J 31OCT CDGMXP 900A 1025A 31OCT
OPERATED BY AIR CANADA
YYZ CHECK-IN WITH AIR CANADA
3 LH 259J 03NOV T MXPFRA 740A 900A 03NOV
OPERATED BY LUFTHANSA
MAD CHECK-IN WITH LUFTHANSA
4 DL2252Z 01OCT T SATDTW*SS1 1246P 454P
5 DL 98Z 01OCT T DTWCDG*SS1 608P 805A 02OCT W /DCDL /E
6 DL8322Z 02OCT W CDGBOD*SS1 935A 1050A /DCDL /E
OPERATED BY AIR FRANCE
grggf rge
7 DL9365Z 09OCT W BODAMS*SS1 1150A 140P /DCDL /E
OPERATED BY KLM ROYAL DUTCH AIRLINES
8 DL8178Z 09OCT W AMSSLC*SS1 500P 655P /DCDL /E
OPERATED BY KLM ROYAL DUTCH AIRLINES
fre
f
10 LH 454J 03NOV FRASFO 1005A 205P 03NOV
11 LH 454J 03NOV SFOKIV 205P 235P 03NOV`;
// 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