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!

O'Reilly Velocity Conference
Save 20% with discount code AFF20

Recent Features

  • Create a Sheen Logo Effect with CSS

    I was inspired when I first saw Addy Osmani's original ShineTime blog post.  The hover sheen effect is simple but awesome.  When I started my blog redesign, I really wanted to use a sheen effect with my logo.  Using two HTML elements and...

  • An Interview with Eric Meyer

    Your early CSS books were instrumental in pushing my love for front end technologies. What was it about CSS that you fell in love with and drove you to write about it? At first blush, it was the simplicity of it as compared to the table-and-spacer...

Incredible Demos

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

  • Open Files from Command Line on OS X

    I'm as much of a fan of application UIs as anyone else but I'm finding myself working more and more from the command line lately.  Much of that is becoming obsessed with media manipulation but I'm forcing myself to use less UIs so that I...

  • Get Stock Quotes From Command Line

    When I conned my way into my first professional programming gig, I didn't really think much about money -- just that I was getting my foot in the door.  But as my career has gone on, I've been more aware of money, investing, and retirement.  I've recently...

  • Geolocation API

    One interesting aspect of web development is geolocation; where is your user viewing your website from? You can base your language locale on that data or show certain products in your store based on the user's location. Let's examine how you can...

  • Create an Image Preview from a Video

    Visuals are everything when it comes to media.  When I'm trying to decide whether to watch a video on Netflix, it would be awesome to see a trailer of some kind, but alas that isn't available.  When I'm looking to download a video on my computer,...

  • New:  Webdesigner News!

    A new and exciting website has recently been launched for web designers and developers. You likely spend hours every morning browsing through hundreds of posts on your RSS feeds, hoping to stumble across relevant stories. Webdesigner News was built to provide web designers and developers with...