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