是否有一个JavaScript正则表达式来删除除换行符之外的所有空格?

sat*_*sat 21 javascript regex

如何删除字符串中的空格而不是JavaScript中的换行符.我通过使用找到了C#的解决方案\t ,但JavaScript不支持它.

为了更清楚,这是一个例子:

var s = "this\n is a\n te st"
Run Code Online (Sandbox Code Playgroud)

使用regexp方法我期望它返回

"this\nisa\ntest"
Run Code Online (Sandbox Code Playgroud)

tKe*_*tKe 12

虽然在Javascript / /g中匹配\t,我发现它可以隐藏原始意图,因为它读取为空格字符的匹配.另一种方法是使用明确列出空白字符的字符集,不包括\n.即/[ \t\r]+/g.

var newString = s.replace(/[ \t\r]+/g,"");
Run Code Online (Sandbox Code Playgroud)


Rue*_*uel 11

这将是有效的,甚至可以\t.

var newstr = s.replace(/ +?/g, '');
Run Code Online (Sandbox Code Playgroud)

  • 不需要+或?,只需s.replace(//g,'')即可.我个人不喜欢//g匹配标签的事实,因为这对我来说读作"匹配空格字符"./ [\ t\r]/g将匹配空格,制表符和字符返回,并且在其意图中更具可读性. (4认同)
  • 你确定 `/ +?/g` 在 `\t` 上工作吗?'因为我从 `a="\t";b=a.replace(/ +?/g, '');console.log([a.length,b.length]) 得到了 `[1,1]` ;`,在 Firefox8 上。 (3认同)
  • 在我测试过的任何地方,标签都不会被替换。 (2认同)

Mat*_*ley 6

如果要\s匹配除换行符之外的每个空格字符,可以使用:

/[\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+/g
Run Code Online (Sandbox Code Playgroud)

请注意,这将删除回车符(\r),因此如果输入包含\r\n对,则它们将被转换为just \n.如果要保留回车符,只需\r从正则表达式中删除.


Ste*_*hon 6

[^\S\r\n]+
Run Code Online (Sandbox Code Playgroud)

不是空白字符,不是\r,不是\n;一个或多个实例。

  • 哇。井井有条。我想知道为什么这不是排除特定字符的流行方式。 (2认同)
  • 这是一个很棒的答案,它支持一整类“这个,除了那个”正则表达式。 (2认同)