Search code examples
javascriptregex

How do you use a variable in a regular expression?


I would like to create a String.replaceAll() method in JavaScript and think using a regex would be the most terse way to do it. However, I can't figure out how to pass a variable into a regex. I can do this already which will replace all the instances of "B" with "A".

"ABABAB".replace(/B/g, "A");

But I want to do something like this:

String.prototype.replaceAll = function(replaceThis, withThis) {
    this.replace(/replaceThis/g, withThis);
};

But obviously, this will only replace the text "replaceThis"...so how do I pass this variable into my regex string?


Solution

  • Instead of using the /\sREGEX\s/g syntax, you can construct a new RegExp object:

    // variable == 'REGEX'
    let re = new RegExp(String.raw`\s${variable}\s`, "g");
    

    You can dynamically create regex objects this way. Then you will do:

    "mystring1".replace(re, "newstring");
    

    For older browser or node

    // variable == 'REGEX'
    var re = new RegExp("\\s" + variable + "\\s", "g");
    "mystring1".replace(re, "newstring");