/** * Given we have a regex with one more matching groups. * The regex should capture those groups from an 'input' * string and replace the matched values in an 'template' * string. * * Example: * regex: /([1-9]{8})/([1-9]{8})?/ * input string: '/some-magic/path/12122211/22112211' * template string: 'http://someurl?adId=$1&adId=$2' * * Should produce following output: * http://someurl?adId=12122211&adId=22112211 * * My current implementation, kinda works, but would love * to improve the string-template updater. */ const re = new RegExp('/([1-9]{8})/([1-9]{8})?'); const input = '/some-magic/path/12122211/22112211'; const template = 'http://someurl?adId=$1&adId=$2'; const match = re.exec(input); let output = template; if (match) { for(let i=1; i<match.length; i++) { if(match[i]) { output = output.replace(`$${i}`, match[i]) } } } console.log(output);