Your implementation is missing features like capture-based substitions
// Remove repeated characters
'foobar'.replace(/(.)\1+/g, '$1')
"fobar"
and overriding behaviour with Symbol.replace