JavaScript String replaceAll
Replacing a substring of text within a larger string has always been misleading in JavaScript. I wrote Replace All Occurrences of a String in JavaScript years ago and it's still one of my most read articles.
The confusion lies in that replace
only replaces the first occurrence of a substring, not all occurrences. For example:
'yayayayayaya'.replace('ya', 'na'); // nayayayayaya
To replace all instances of a substring, you've needed to use a regular expression:
'yayayayayaya'.replace(/ya/g, 'na'); // nananananana
Using regular expressions is certainly powerful but let's be honest -- oftentimes we simply want to replace all instances of a simple substring that shouldn't require a regular expression.
Luckily, this year the JavaScript language provided us with String.prototype.replaceAll
, a method for replacing without using regular expressions:
'yayayayayaya'.replaceAll('ya', 'na'); // nananananana
Sometimes an API exists in a confusing format and standards bodies simply need to improve the situation. I'm glad they did so with replaceAll
!