Javascript、正则表达式:用空格和匹配字符替换指定字符

Javascript、正则表达式:用空格和匹配字符替换指定字符,javascript,regex,Javascript,Regex,我试图用一个正则表达式使用javascriptreplace(),这样当它匹配某些字符时,比如:它将用空格包围的字符替换匹配的字符。例如,字符串“hello?!?”将变成“hello?!?” 对于我希望替换的每个字符,有没有比只执行string.replace()更好的方法 我知道我可以用'/[!\?\.]/g'很容易地选择字符,但是让它替换为匹配的相同字符是我无法做到的。如果'/[!\?.]/g'匹配为正则表达式,只需用()来捕获组 “/([!\?)/g” 然后使用返回的匹配组获取匹配的字符只

我试图用一个正则表达式使用javascript
replace()
,这样当它匹配某些字符时,比如:
它将用空格包围的字符替换匹配的字符。例如,字符串
“hello?!?”
将变成
“hello?!?”

对于我希望替换的每个字符,有没有比只执行
string.replace()
更好的方法


我知道我可以用
'/[!\?\.]/g'
很容易地选择字符,但是让它替换为匹配的相同字符是我无法做到的。

如果
'/[!\?.]/g'
匹配为正则表达式,只需用()来捕获组 “/([!\?)/g”


然后使用返回的匹配组获取匹配的字符

只需添加反向引用即可,如下所示:

"hello?!?".replace(/([!?\,\.])/g, ' $1 ');

之间应该有一个或两个空格吗
在你的例子中?不管怎样,在我使用/+/g分割句子后,它解释了它们之间的任何空格数,以解释用户错误如果空格数无关紧要,那么莱昂纳多·查利斯的答案就是你要找的答案。对于后面的引用有什么转义吗?执行上述操作将得到“hello$1$1$1”。这将在连续的特殊字符之间添加两个空格。@Scott101我编辑以转义正则表达式中的句点,并在上面的请求中添加逗号。如果您复制/粘贴上面的行,并在浏览器的js控制台中运行它,它将按要求工作。@go oleg这对我正在做的事情没有问题,因为我立即使用/+/g拆分字符串。字符串是用户输入,我需要将其分解,我不相信它们不会在单词之间放置多个空格。@Tracker1非常感谢,忘记将正则表达式括在括号中了。我必须等待3分钟才能接受答案,因为堆栈溢出还不允许我接受它。