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.
-
Should there be one or two spaces between
?
and!
in your example? – t.niese Commented Jul 10, 2013 at 19:32 - Either way, after I split the sentence using / +/g which accounts for any number of spaces being between them to account for user error – Scott101 Commented Jul 10, 2013 at 19:35
- If the number of spaces does not matter then the answer of LeonardChallis is the one you are looking for. – t.niese Commented Jul 10, 2013 at 19:37
2 Answers
Reset to default 5It'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