Seth Duncan
Seth Duncan

Reputation: 1255

Regex replace for multiple matches

Trying to figure out a Regex to inject and remove a string (in this case var.par_) at the following locations:

Example input string when injecting:

job=developer^language=js^ORlanguage=react^ORlanguageSTARTSWITHjava

Should result in output of

var.par_job=developer^var.par_language=js^ORvar.par_language=react^ORvar.par_languageSTARTSWITHjava

and vice versa when removing:

var.par_language=react^ORvar.par_languageSTARTSWITHjava

should result in

language=react^ORlanguageSTARTSWITHjava

My current feeble attempt was this:

var input = "job=developer^language=js^ORlanguage=react^ORlanguageSTARTSWITHjava";


const replaceToken = "var.par_";


var output = input.replace(/^()?/, replaceToken).replace(/\^()?/g, '^' + replaceToken);

Upvotes: 0

Views: 150

Answers (1)

Barmar
Barmar

Reputation: 780698

let input = "job=developer^language=js^ORlanguage=react^ORlanguageSTARTSWITHjava";
const replaceToken = "var.par_";
let output = input.replace(/^|\^OR|\^/g, '$&' + replaceToken);
console.log(output)

The regexp /^|\^OR|\^/ matches each of your locations. $& in the replacement gets replaced with the match. So there's no need to use multiple calls to .replace().

Upvotes: 1

Related Questions