在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在评论中建议了这两种修复方法,感谢您链接到替换反向参考的解释