preg_replace('/ \ h + /','',$ foo)在JavaScript中?

时间:2018-09-30 03:19:39

标签: javascript

如何删除多余的水平空白(空格和制表符),但保留javascript中的换行符?

使用PHP:preg_replace( '/\h+/', ' ', $foo )

A   lot   of   text text   text     text
A lot more  text     text text     text       text

应该像这样:

A lot of text text text text
A lot more text text text text text

4 个答案:

答案 0 :(得分:3)

您可以使用同时包含制表符和空格的字符集:

\p{Me}

或者,改用const str = `A lot of text text text text And more text text text text text`; console.log( str.replace(/[ ]+/g, ' ') );元字符:

\t

答案 1 :(得分:1)

您可以使用双负/[^\S\n]+/查找不是换行符的空格字符:

let str = `A   lot   of   text text   text     text
A lot more  text     text text     text       text`
console.log('before:',str)

// use a double negative (not a word character or newline)
str = str.replace(/[^\S\n]+/g,' ')
console.log('after:',str)

我不确定这是否可以捕获不同类型空格(en,em等)的所有条件,因为这取决于JavaScript regex处理\S的方式,但这可能比所有方法更安全到目前为止列出的其他答案。

答案 2 :(得分:0)

const str = `A   lot   of			text text   text     text
And more  text     text text     text         text`;

console.log(
  str.replace(/[ \t]{2,}/g, ' ')
);

答案 3 :(得分:0)

outp = str.replace(/[ \t]+/g,' ');

此过滤器会过滤所有多余的空格和制表符