用于删除空格的正则表达式

tus*_*ath 11 javascript regex

我有一些看起来像这样的文字 -

"    tushar is a good      boy     "
Run Code Online (Sandbox Code Playgroud)

使用javascript我想删除字符串中的所有额外的空格.

结果字符串应该没有多个空格而不是只有一个.此外,起点和终点不应该有任何空格.所以我的最终输出应该是这样的 -

"tushar is a good boy"
Run Code Online (Sandbox Code Playgroud)

我目前正在使用以下代码 -

str.replace(/(\s\s\s*)/g, ' ')
Run Code Online (Sandbox Code Playgroud)

这显然会失败,因为它不会处理字符串开头和结尾的空格.

anu*_*ava 16

这可以在一次String#replace通话中完成:

var repl = str.replace(/^\s+|\s+$|\s+(?=\s)/g, "");

// gives: "tushar is a good boy"
Run Code Online (Sandbox Code Playgroud)

  • (?=\s)确保匹配中不包含至少一个以下空格.这样只删除多余的空格而不是最终的空格.然而,问题在于,无论最终的空白字符是什么(制表符,换行符等),它都将保留,而不是用实际空格替换. (2认同)

Dan*_*ite 5

试试这个:

str.replace(/\s+/g, ' ').trim()
Run Code Online (Sandbox Code Playgroud)

如果你没有trim添加这个.

在JavaScript中修剪字符串?


小智 5

既然大家都在抱怨.trim(),你可以使用以下方法:

str.replace(/\s+/g,' ' ).replace(/^\s/,'').replace(/\s$/,'');

JSFiddle


Jos*_*ers 5

这很好用:

function normalizeWS(s) {
    s = s.match(/\S+/g);
    return s ? s.join(' ') : '';
}
Run Code Online (Sandbox Code Playgroud)
  • 修剪领先的空白
  • 修剪尾随空格
  • 将制表符,换行符和多个空格标准化为单个常规空间