在JavaScript中使用正则表达式删除元字符周围的空格

在JavaScript中使用正则表达式删除元字符周围的空格,javascript,regex,Javascript,Regex,默认情况下,在不删除所述字符(如/\s*(\W)\s*/g)的情况下,尝试删除非字母数字字符周围的任何空格都会失败 是否有一种方法可以只针对带有.replace()的空格 e、 g: var regex=“/\s*(\W)\s*/g”; var text=“Words:\“文本文档\”; var text=text.replace(regex,“”); console.log(text)您应该记住,\W匹配任何非ASCII字母、数字或\uu的“非单词”字符\W在JS正则表达式中等于[^A-Za

默认情况下,在不删除所述字符(如
/\s*(\W)\s*/g
)的情况下,尝试删除非字母数字字符周围的任何空格都会失败

是否有一种方法可以只针对带有.replace()的空格

e、 g:

var regex=“/\s*(\W)\s*/g”;
var text=“Words:\“文本文档\”;
var text=text.replace(regex,“”);

console.log(text)
您应该记住,
\W
匹配任何非ASCII字母、数字或
\uu
的“非单词”字符<代码>\W在JS正则表达式中等于
[^A-Za-z0-9\]
。因此,它还匹配需要删除的空白。为了只能够匹配非空白非单词字符,您需要将
\W
替换为
[^\W\s]
模式

因此,剩下的只是将匹配项替换为组1的值,在JS中为
$1

text = text.replace(/\s*([^\w\s])\s*/g , "$1")

JS演示:


console.log(“Some-text+=@!#$#$^%*此处。”。替换(/\s*([^\w\s])\s*/g,“$1”)
您的正则表达式有什么问题?(好吧,我会使用
[^\w]
而不是
\w
,这样就不会匹配空格。)请添加您想要的文本您想用JavaScript中的第一组替换文本吗?例如,
text.replace(/\s*(\W)\s*/g,“$1”)
?感谢Ritesh,您的解决方案工作Enrico Maria De Angelis和Ritesh Khandekar在评论中建议了这两种修复方法,感谢您链接到替换反向参考的解释