const regex = /caller\"\s*:\s*\{\s*\"id\":\s*\"(?<callerid>[^\"]+)?\"\,\s*\"version\"\s*:\s*\"(?<callerversion>[^\"]+)?\"/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('caller\\"\\s*:\\s*\\{\\s*\\"id\\":\\s*\\"(?<callerid>[^\\"]+)?\\"\\,\\s*\\"version\\"\\s*:\\s*\\"(?<callerversion>[^\\"]+)?\\"', 'gm')
const str = `{
"info":{
"eventSource":"",
"sourceType":"I/O",
"status":{
"code":"",
"msg":"",
"msgError":""
},
"transactionId":null,
"traceId":null,
"timestampStart":"2019-05-16T21:30:55.174Z",
"timestampEnd":"2019-05-16T21:30:55.174Z",
"companyIDCode":"",
"channelIDCode":"",
"branchCode":"",
"searchFields":{
"key_3":"value",
"key_2":"value",
"key_1":"value"
},
"annotation":{},
"caller":{
"id":"caller_01",
"version":"1.2.3",
"acronym":""
},
"called":{
"id":"called_id",
"version":"3.2.1",
"acronym":""
},
"storage":{
"id":"",
"start":"",
"end":""
}
}
},
"headers":[],
"payLoad":{
"input":{
"encoding":"1024",
"ccsid":"1024",
"data":"dati_in"
},
"output":{
"encoding":"1024",
"ccsid":"1024",
"data":"dati_out"
}
}
}
`;
// 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