Why do i need to add /g when using string replace in Javascript?

Solution 1:

It isn't required, but by default string.replace in JavaScript will only replace the first matching value it finds. Adding the /g will mean that all of the matching values are replaced.

Solution 2:

The "g" that you are talking about at the end of your regular expression is called a "modifier". The "g" represents the "global modifier". This means that your replace will replace all copies of the matched string with the replacement string you provide.

A list of useful modifiers:

  1. g - Global replace. Replace all instances of the matched string in the provided text.
  2. i - Case insensitive replace. Replace all instances of the matched string, ignoring differences in case.
  3. m - Multi-line replace. The regular expression should be tested for matches over multiple lines.

You can combine modifiers, such as g and i together, to get a global case insensitive search.

Examples:

//Replace the first lowercase t we find with X
'This is sparta!'.replace(/t/,'X');
//result: 'This is sparXa!'

//Replace the first letter t (upper or lower) with X
'This is sparta!'.replace(/t/i, 'X');
//result: 'Xhis is sparta!'

//Replace all the Ts in the text (upper or lower) with X
'This is sparta!'.replace(/t/gi, 'X' );
//result: 'Xhis is sparXa!'

For more information see the JavaScript RegExp Object Reference at the w3schools.

Solution 3:

The 'g' flag means "global" so each occurrence of %0D%0A will be replaced. Otherwise it would replace the FIRST occurrence only.

Solution 4:

The g regular expression modifier (called the global modifier) basically says to the engine not to stop parsing the string after the first match. If you were to omit the modifier, only the first instance of %0D%0A would be replaced (it might be desirable in some cases).