【问题标题】:Remove spaces around metacharacters with regex in JavaScript在 JavaScript 中使用正则表达式删除元字符周围的空格
【发布时间】:2020-03-06 17:56:45
【问题描述】:

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

有没有办法只使用 .replace() 来定位空格?

例如:

var regex = "/\s*(\W)\s*/g";
var text = "Words  : \"  text docs\"";
var text = text.replace(regex , "");
console.log(text)

预期文本:"Words:"text docs"

类似remove white spaces between special characters and words python,但在javascript中

【问题讨论】:

  • 你的正则表达式有什么问题? (好吧,我会使用 [^\w ] 而不是 \W 以免匹配空格。)
  • 请添加您期望的文本
  • 您想用 JavaScript 中的第一组替换文本吗?例如。 text.replace(/\s*(\W)\s*/g , "$1")??
  • 谢谢 Ritesh,您的解决方案有效

标签: javascript regex


【解决方案1】:

您应该记住,\W 匹配任何不是 ASCII 字母、数字或 _ 的“非单词”字符。 \W,在 JS 正则表达式中,等于 [^A-Za-z0-9_]。因此,它还匹配您需要删除的空格。为了能够仅匹配非空白非单词字符,您需要将 \W 替换为 [^\w\s] 模式。

所以,剩下的就是将replacement backreference 的匹配替换为Group 1 的值,即JS 中的$1

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

regex demo

JS 演示:

console.log("Some - text +=@!#$#$^%* here .        ".replace(/\s*([^\w\s])\s*/g , "$1"))

【讨论】:

  • Enrico Maria De Angelis 和 Ritesh Khandekar 建议了 cmets 中的两个修复,感谢您提供替换反向引用解释的链接
猜你喜欢
  • 2014-08-22
  • 1970-01-01
  • 2011-11-01
  • 2020-12-28
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多