如何清理多个空格/换行?

时间:2016-09-02 17:55:26

标签: javascript regex

我有一个变量summary,如下所示:

T    he  
Fox


Jumped



    Over

要清理summary有三个部分:

  • 2+连续空格应变为1个空格,请参阅下面的T he
  • 2+连续换行符应成为2个换行符,请参阅
  • 下方的垂直间距
  • 应删除标签。

目标是:

T he  
Fox

Jumped    

Over

注意:我尝试了summary.replace(/\s\s+/g, ' ');,但输出T he Fox Jumped Over,它负责第一部分,但完全破坏了第二部分的垂直间距,因为它考虑它连续间距。如果标签存在,也应该删除/清理标签。

我怎样才能达到目标?

更新:我想我在第2部分搞砸了#换行符,所以我更新了它。但目标是我们在间距/格式方面所追求的目标。

3 个答案:

答案 0 :(得分:5)

summary.replace(/ +/g, ' ').replace(/\n\n+/g, "\n\n").replace(/\t+/g, '');

答案 1 :(得分:2)

两个+连续的空格或换行符。

查找((?:[ ]|\r?\n))\1+
替换引擎使用的$1\1

修改以删除所有标签。
注意 - 当标签匹配时,捕获组1将为空 结果:选项卡被删除,而不是替换。使用相同的替换。

查找(?:\t+|((?:[ ]|\r?\n))\1+)
替换$1\1

edit2: 2个换行符成为2个换行符 (更多补充,OP不断改变它)

查找(?:\t+|((?:[ ](?=[ ])|(?:\r?\n){2}))\1*)
替换$1\1

只需要1次通过,是最快的方式

答案 2 :(得分:1)

summary.replace(/([ \n\t])\1+/g, '$1');

或者如果你是所有空格字符

summary.replace(/(\s)\1+/g, '$1');

这样做效率更高,因为它只对字符串进行一次传递。