I am trying to use javascript replace()
with a regex expression so that when it matches certain characters like: .,!?
it will replace the matched character with itself surrounded by spaces. For example the string "hello?!?"
will bee "hello ? ! ? "
.
Is there a better way than just doing a string.replace()
for each character I wish replace?
I know I can select on the characters easy enough with '/[!\?\.]/g'
, but getting it to replace it with the same character it matched with is eluding me.
I am trying to use javascript replace()
with a regex expression so that when it matches certain characters like: .,!?
it will replace the matched character with itself surrounded by spaces. For example the string "hello?!?"
will bee "hello ? ! ? "
.
Is there a better way than just doing a string.replace()
for each character I wish replace?
I know I can select on the characters easy enough with '/[!\?\.]/g'
, but getting it to replace it with the same character it matched with is eluding me.
?
and !
in your example?
– t.niese
Commented
Jul 10, 2013 at 19:32
It's as simple as adding a back-reference, like so:
"hello?!?".replace(/([!?\,\.])/g, ' $1 ');
If '/[!\?.]/g'
matches as a regex, just capture the group by surrounding it with ()'s
'/([!\?.])/g'
Then use the returned matched group to get the character you matched