const regex = /:([0-9]{2}[A-Z])(?:::|:)((.*)\/\/(.*)(?:\/)(.*)?|(.*)\/\/(.*)|((ISIN) ([A-Z]{2}[0-9]{10}))?((?:[\s\S](?!:[0-9]{2}[A-Z]:))*))/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp(':([0-9]{2}[A-Z])(?:::|:)((.*)\\\/\\\/(.*)(?:\\\/)(.*)?|(.*)\\\/\\\/(.*)|((ISIN) ([A-Z]{2}[0-9]{10}))?((?:[\\s\\S](?!:[0-9]{2}[A-Z]:))*))', 'gm')
const str = `{1:F01FNZWGB2SB0100803124654}{2:O5350219180911CRESCHZZE80A61337108691809110119N}{3:{108:12195636003}}{4:
:16R:GENL
:28E:00001/ONLY
:20C::SEME//MONY31109D098518
:23G:NEWM
:98A::PREP//20180911
:98A::STAT//20180910
:22F::SFRE//DAIL
:22F::CODE//COMP
:22F::STTY//CUST
:22F::STBA//SETT
:97A::SAFE//0835-2393193-05-000
:17B::ACTI//Y
:17B::CONS//N
:16S:GENL
:16R:SUBSAFE
:16R:FIN
:35B:ISIN CH0016431741
ANTEILE -I DY- PICTET CH - CHF
BONDS TRACKER
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//CHF
:16S:FIA
:90B::MRKT//ACTU/CHF1056,8
:93B::AGGR//UNIT/0,184
:93B::AVAI//UNIT/0,184
:16R:SUBBAL
:93B::AGGR//UNIT/0,184
:94F::SAFE//CUST/MGTCBEBEFND
:16S:SUBBAL
:19A::HOLD//CHF194,45
:16S:FIN
:16R:FIN
:35B:ISIN CH0117044708
ANTEILE -DT USD- SWISSCANTO (CH)
INDEX FUND V - SWISSCANTO (CH)
INDEX EQUITY FUND USA
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//USD
:16S:FIA
:90B::MRKT//ACTU/USD238,6195
:93B::AGGR//UNIT/1,044
:93B::AVAI//UNIT/1,044
:16R:SUBBAL
:93B::AGGR//UNIT/1,044
:94F::SAFE//NCSD/INSECHZZXXX
:16S:SUBBAL
:19A::HOLD//CHF242,31
:92B::EXCH//USD/CHF/0,97265
:16S:FIN
:16R:FIN
:35B:ISIN CH0185709083
ANTEILE -QA- CREDIT SUISSE INDEX
FUND (CH) UMBRELLA - CSIF (CH)
EQUITY EMERGING MARKETS BLUE
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//CHF
:16S:FIA
:90B::MRKT//ACTU/CHF1169,79
:93B::AGGR//UNIT/0,201
:93B::AVAI//UNIT/0,201
:16R:SUBBAL
:93B::AGGR//UNIT/0,201
:94B::SAFE//SHHE/9904
:16S:SUBBAL
:19A::HOLD//CHF235,13
:16S:FIN
:16R:FIN
:35B:ISIN CH0190222403
ANTEILE -QA- CREDIT SUISSE INDEX
FUND (CH) I UMBRELLA - CSIF (CH)
I EQUITY EUROPE EX CH
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//CHF
:16S:FIA
:90B::MRKT//ACTU/EUR1129,18
:93B::AGGR//UNIT/0,178
:93B::AVAI//UNIT/0,178
:16R:SUBBAL
:93B::AGGR//UNIT/0,178
:94F::SAFE//NCSD/INSECHZZXXX
:16S:SUBBAL
:19A::HOLD//CHF226,85
:92B::EXCH//EUR/CHF/1,128663095
:16S:FIN
:16R:FIN
:35B:ISIN CH0190227683
ANTEILE -QA- CREDIT SUISSE INDEX
FUND (CH) UMBRELLA - CSIF (CH)
EQUITY JAPAN
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//JPY
:16S:FIA
:90B::MRKT//ACTU/JPY231558,
:93B::AGGR//UNIT/0,117
:93B::AVAI//UNIT/0,117
:16R:SUBBAL
:93B::AGGR//UNIT/0,117
:94F::SAFE//NCSD/INSECHZZXXX
:16S:SUBBAL
:19A::HOLD//CHF237,15
:92B::EXCH//JPY/CHF/0,0087535442107
:16S:FIN
:16R:FIN
:35B:ISIN CH0220919085
ANTEILE -FBH CHF- CREDIT SUISSE
INDEX FUND (CH) II UMBRELLA -
CSIF (CH) II GOLD BLUE
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//CHF
:16S:FIA
:90B::MRKT//ACTU/CHF870,46
:93B::AGGR//UNIT/0,047
:93B::AVAI//UNIT/0,047
:16R:SUBBAL
:93B::AGGR//UNIT/0,047
:94F::SAFE//NCSD/INSECHZZXXX
:16S:SUBBAL
:19A::HOLD//CHF40,91
:16S:FIN
:16R:FIN
:35B:ISIN CH0259132303
ANTEILE -QAH- CREDIT SUISSE
INDEX FUND (CH) UMBRELLA - CSIF
(CH) BOND GOVERNMENT EMERGING
MARKETS USD BLUE
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//CHF
:16S:FIA
:90B::MRKT//ACTU/CHF871,8
:93B::AGGR//UNIT/0,208
:93B::AVAI//UNIT/0,208
:16R:SUBBAL
:93B::AGGR//UNIT/0,208
:94F::SAFE//NCSD/INSECHZZXXX
:16S:SUBBAL
:19A::HOLD//CHF181,33
:16S:FIN
:16R:FIN
:35B:ISIN CH0304170571
ANTEILE -QAH- CREDIT SUISSE
INDEX FUND (CH) UMBRELLA - CSIF
(CH) BOND GOVERNMENT USD BLUE
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//CHF
:16S:FIA
:90B::MRKT//ACTU/CHF910,27
:93B::AGGR//UNIT/0,2
:93B::AVAI//UNIT/0,2
:16R:SUBBAL
:93B::AGGR//UNIT/0,2
:94F::SAFE//NCSD/INSECHZZXXX
:16S:SUBBAL
:19A::HOLD//CHF182,05
:16S:FIN
:16R:FIN
:35B:ISIN CH0316599023
ANTEILE -QAH- CREDIT SUISSE
INDEX FUND (CH) UMBRELLA - CSIF
(CH) BOND CORPORATE EUR
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//CHF
:16S:FIA
:90B::MRKT//ACTU/CHF993,13
:93B::AGGR//UNIT/0,196
:93B::AVAI//UNIT/0,196
:16R:SUBBAL
:93B::AGGR//UNIT/0,196
:94F::SAFE//NCSD/INSECHZZXXX
:16S:SUBBAL
:19A::HOLD//CHF194,65
:16S:FIN
:16R:FIN
:35B:ISIN CH0342181622
ANTEILE -D CHF- BLACKROCK
INVESTMENT FUNDS SWITZERLAND -
ISHARES SPI (R) EQUITY INDEX
FUND (CH)
:16R:FIA
:22F::FORM//BEAR
:11A::DENO//CHF
:16S:FIA
:90B::MRKT//ACTU/CHF1089,63
:93B::AGGR//UNIT/0,217
:93B::AVAI//UNIT/0,217
:16R:SUBBAL
:93B::AGGR//UNIT/0,217
:94F::SAFE//NCSD/INSECHZZXXX
:16S:SUBBAL
:19A::HOLD//CHF236,45
:16S:FIN
:16S:SUBSAFE
:16R:ADDINFO
:19A::HOLP//CHF1971,28
:19A::HOLS//CHF1971,28
:16S:ADDINFO
-}{5:{MAC:00000000}{CHK:DFB75BA65E32}}{S:{SAC:}{COP:P}{SIG:<SignatureList><SwSec:Signature><SwSec:SignedInfo><Sw:Reference><Sw:DigestValue>xlO1QD8wtqFYh2Dv3XOMVXW+LFK/G4wNNP+lkEbVAec=</Sw:DigestValue></Sw:Reference></SwSec:SignedInfo><SwSec:SignatureValue>PEMF@Proc-Type: 4,MIC-ONLY
Content-Domain: RFC822
EntrustFile-Version: 2.0
Originator-DN: cn=finprod-uh,o=creschzz,o=swift
Orig-SN: 1500888122
MIC-Info: SHA256, RSA,
tqIGXV4JZtOE8FfTXmrBnxtWLRCRygaup2b2Rc+Ac9XjvrjJ+k24RFvuo5YrW3ek
+iaYiRPiW46eRRuQO2bdC9lqvDwpluuVRXLBhNkXPmqoKG3ceQM/C2pDlwrunSDu
RNBU3kdCBp9HBiWh/qikrCYQ/axjIUowJA+4yJV+fb8ihvkpRPlEHod85CmYyGYm
jKsngF66rYeR9yFu5MN20YkxmLR0NnswZjZ/EyjALjdpPNEt+h55O5RKqv7go2VF
w9PQws0vz5gMwZs7S//QF322QsQsXG7+rqYqd97+mkbmxGWDsU/EHneDjFsqnSgO
5CR844lPC8tZInZhflckBA==
</SwSec:SignatureValue><SwSec:KeyInfo><SwSec:SignDN>cn=finprod-uh,o=creschzz,o=swift</SwSec:SignDN><SwSec:CertPolicyId>1.3.21.6.2</SwSec:CertPolicyId></SwSec:KeyInfo><SwSec:Manifest><Sw:Reference><Sw:DigestRef>M</Sw:DigestRef><Sw:DigestValue>MlL+Hb1Y9ZeQqxZOnv/u8bwiQNn5hj/ItM6F7gUKDBE=</Sw:DigestValue></Sw:Reference><Sw:Reference><Sw:DigestRef>Sw.E2S</Sw:DigestRef><Sw:DigestValue>eWlk1Jvu93rzuPg9VHCu9Ro9daY42/eFqlQwjcUd8t4=</Sw:DigestValue></Sw:Reference></SwSec:Manifest></SwSec:Signature></SignatureList>}}`;
// 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