O'Reilly

Replace All Occurrences of a String in JavaScript

By on  

One thing you may have noticed is that JavaScript's String.replace() method doesn't act like replacement methods in other languages. Take the following for example:

var replaced = 'The MooTools JavaScript library is is great.  I have never loved any code as I have MooTools!'.replace('MooTools','MooTools FTW!');

The above code will only replace the first occurrence of "MooTools" -- not every occurrence like PHP's str_replace() would. To replace every occurrence of a string in JavaScript, you must provide the replace() method a regular expression with a global modifier as the first parameter:

var replaced = 'The MooTools JavaScript library is is great.  I have never loved any code as I have MooTools!'.replace(/MooTools/g,'MooTools FTW!');

Remember that you must escape special characters within your regular expression. And oh -- how convenient! MooTools provides a method that will do that for you!

Track.js Error Reporting

Recent Features

  • Responsive Images: The Ultimate Guide

    Chances are that any Web designers using our Ghostlab browser testing app, which allows seamless testing across all devices simultaneously, will have worked with responsive design in some shape or form. And as today’s websites and devices become ever more varied, a plethora of responsive images...

  • How to Create a Twitter Card

    One of my favorite social APIs was the Open Graph API adopted by Facebook.  Adding just a few META tags to each page allowed links to my article to be styled and presented the way I wanted them to, giving me a bit of control...

Incredible Demos

  • AJAX Page Loads Using MooTools Fx.Explode

    Note: All credit for Fx.Explode goes to Jan Kassens. One of the awesome pieces of code in MooTools Core Developer Jan Kassens' sandbox is his Fx.Explode functionality. When you click on any of the designated Fx.Explode elements, the elements "explode" off of the...

  • CSS Kwicks

    One of the effects that made me excited about client side and JavaScript was the Kwicks effect.  Take a list of items and react to them accordingly when hovered.  Simple, sweet.  The effect was originally created with JavaScript but come five years later, our...

Discussion

  1. Richard

    I had this issue before, didn’t knew the answer was so simple. Out of frusteration I actually used php.js because I couldn’t figure it out. Thnx man.

  2. Jay

    FTR, JS’s replace function DOES act like replace functions in other languages, just perhaps not the ones you’re expecting it to.

    It doesn’t work like str_replace in PHP, but it is very similar to preg_replace.

    As long as developers are aware that .replace is a regular expression replacement method, I think it’s pretty straightforward.

    http://www.w3schools.com/jsref/jsref_replace.asp

    It should also be noted that one can create a regular expression using something like:

    var regex = new RegExp('MooTools', 'g');
    

    And that regular expression can be used in the replace function (first parameter). Which is helpful if you ever want to use the contents of a variable in your replacement:

    http://tommcfarlin.com/2008/03/11/using-local-variables-with-javascripts-replace-function/

    Don’t forget to escape!

  3. “.replace is a regular expression replacement method” (@Jay)

    I think that’s quite misleading. From what you’ve said one would assume that the replace-method’s first argument is converted to a regular expression implicitly when in fact, if you pass a string, it’s treated as literal text and is not converted to a RegExp object.

    Also, just to clarify, /regex/ is the same as RegExp(‘regex’) – which, btw, doesn’t require the new operator.

  4. David, just a question, whats the name of comments system that you had? WDC or something like that. Thx

  5. elron

    can it replace the page itself?
    i mean, insted of ““, it will write ““,
    or insted if “<iframe>”, it will write “” (“<” is “<")
    waiting for a response.
    thanks!

  6. Yang

    Could you tell me what is code to create the copy to clipboard button, please?

  7. also have this problem. thanks for your perfect method.
    I use replace(/\+/g, ‘ ‘) replace “+” to space

  8. gadget

    Here is another article about javascript replace you people might be interested @

    http://gadgets-code.com/javascript-replace-method-review

    :)

  9. jonathan

    thanks fir that simple but super usefull tip

  10. Abhishek

    use ‘gi’ in place of ‘g’ to replace the string irrespective case, i.e to replace for insenstive case.

  11. quote -replace(/\+/g, ‘ ‘) replace “+” to space”-unquote worked like a charm! for decodeURIComponent after banging my head for two hours!

    //on serverside
    server.encode(uri) 
    //on client side
    var str = decodeURIComponent(uri);
    str.Replace(/\+/g,' ');
    
  12. Pragya Shukla

    Thanks David. It helps me a lot.

  13. newCats = ['lions', 'leopards', 'cats'];
    console.log( newCats.toString().replace(',',', ','g') );
    

    lions, leopards, cats /* and not lions,leopards,cats */

    no need for // in the regex argument if it’s a simple expression.

  14. Pathiv

    Thanks mate….it worked for me….

  15. Thanks David. Works for me!

  16. Leandrom

    thank you!

  17. Bhushan

    Hi
    I need to replace the break in the string. I’m writing each character using plus so that you can unserstand.
    ”. Remove all the + from above string, and i need to replace that string within another string.
    Can you please tell me how to do it ?

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!

Recently on David Walsh Blog

  • Follow Redirects with cURL

    I love playing around with cURL. There's something about loading websites via command line that makes me feel like some type of smug hacker, just like tweeting from command line does. I recently cURL'd the Google homepage and saw the following: I found it weird that Google...

  • Developers Have WordPress, Amateurs Have Squarespace, Professional Designers Have the NEW Webydo!

    Web design platforms have traditionally come in one of two varieties. There are the solutions like WordPress and Drupal that are incredibly powerful, but an understanding of web development and coding is required to be able to use those platforms effectively. On the other side of the...

  • Chris Coyierâs Favorite CodePen Demos II

    Hey everyone! Before we get started, I just want to say it’s damn hard to pick this few favorites on CodePen. Not because, as a co-founder of CodePen, I feel like a dad picking which kid he likes best (RUDE). But because there is just so...

  • GSAP + SVG For Power Users: Motion Along A Path

    Now that the GreenSock API is picking up steam, there are many tutorials and Getting Started guides out there to provide good introductions to the library, not to mention GreenSock’s own Forum and Documentation. This article isn’t intended for beginners, but rather a...

  • Copy a Directory from Command Line

    Copying a directory for the sake of backup is something I do often, especially when I'm trying to figure out why something isn't working when I use an external library.  I'll copy the directory structure as a backup, mess around with the original source until I find a solution,...