Javascript String在多个选择器之前和之后替换空格

时间:2017-01-20 07:55:18

标签: javascript string replace

我有一个字符串,在单词之间有多个空格,我希望将所有空格减少到只有一个。然后删除[',','。&...之前和之后的空格。 #39;,'?','!']并在','之后留出一个空格。 你能帮我一个代码吗?

1 个答案:

答案 0 :(得分:1)

您的方法不起作用,因为您只是逃离newSeparators中的第一个空格,而.?仍然是特殊的正则表达式元字符,/\ . /正则表达式匹配空格,任何字符,空格和/\ ? /将匹配可选空格和1个空格。

我建议使用:

/\s*([.!:?])\s*|\s*(,)\s*/g

请参阅regex demo

<强>详情:

  • \s* - 0+ whitespaces
  • ([.!:?]) - 第1组捕获.!:?
  • \s* - 0+ whitespaces
  • | - 或
  • \s*(,)\s* - 在被捕获到第2组的0个以上空格中的,

var newSeparators = /\s*([.!:?])\s*|\s*(,)\s*/g;
var data = "word, word . word ! word ? word";
data = data.replace(newSeparators, function($0, $1, $2) {
  return $2 ?  $2 + " " : " " + $1 + " ";
});
console.log(data);