Javascript、正则表达式:用空格和匹配字符替换指定字符
我试图用一个正则表达式使用javascriptJavascript、正则表达式:用空格和匹配字符替换指定字符,javascript,regex,Javascript,Regex,我试图用一个正则表达式使用javascriptreplace(),这样当它匹配某些字符时,比如:它将用空格包围的字符替换匹配的字符。例如,字符串“hello?!?”将变成“hello?!?” 对于我希望替换的每个字符,有没有比只执行string.replace()更好的方法 我知道我可以用'/[!\?\.]/g'很容易地选择字符,但是让它替换为匹配的相同字符是我无法做到的。如果'/[!\?.]/g'匹配为正则表达式,只需用()来捕获组 “/([!\?)/g” 然后使用返回的匹配组获取匹配的字符只
replace()
,这样当它匹配某些字符时,比如:代码>它将用空格包围的字符替换匹配的字符。例如,字符串“hello?!?”
将变成“hello?!?”
对于我希望替换的每个字符,有没有比只执行string.replace()
更好的方法
我知道我可以用'/[!\?\.]/g'
很容易地选择字符,但是让它替换为匹配的相同字符是我无法做到的。如果'/[!\?.]/g'
匹配为正则表达式,只需用()来捕获组
“/([!\?)/g”
然后使用返回的匹配组获取匹配的字符只需添加反向引用即可,如下所示:
"hello?!?".replace(/([!?\,\.])/g, ' $1 ');
和之间应该有一个或两个空格吗
在你的例子中?不管怎样,在我使用/+/g分割句子后,它解释了它们之间的任何空格数,以解释用户错误如果空格数无关紧要,那么莱昂纳多·查利斯的答案就是你要找的答案。对于后面的引用有什么转义吗?执行上述操作将得到“hello$1$1$1”。这将在连续的特殊字符之间添加两个空格。@Scott101我编辑以转义正则表达式中的句点,并在上面的请求中添加逗号。如果您复制/粘贴上面的行,并在浏览器的js控制台中运行它,它将按要求工作。@go oleg这对我正在做的事情没有问题,因为我立即使用/+/g拆分字符串。字符串是用户输入,我需要将其分解,我不相信它们不会在单词之间放置多个空格。@Tracker1非常感谢,忘记将正则表达式括在括号中了。我必须等待3分钟才能接受答案,因为堆栈溢出还不允许我接受它。