Javascript Regex - 删除单个空格而不是双空格

时间:2014-03-10 08:20:26

标签: javascript regex

我需要从字符串中删除单个空格,但不是双空格。

使用正则表达式我试过这个,但它无效,我不知道如何解决它:

\s+{1,1}

这就是我想要实现的目标:

原始字符串:

"Okay,  let ’s  get  star ted,  Bret t "

正则表达式替换后(保持双倍间距):

"Okay,  let’s  get  started,  Brett"

4 个答案:

答案 0 :(得分:3)

由于JavaScript不支持lookbehinds,我相信你>必须诉诸回调函数:

str = str.replace(/\s+/g, function(m) {
    return m.length === 1 ? '' : m;
});

答案 1 :(得分:2)

你可以用这个:

"Okay,  let ’s  get  star ted,  Bret t ".replace(/(\S)\s(\S)/g, '$1$2')

但这不会删除字符串末尾的空格,你可以通过以下方式修剪:

"Okay,  let ’s  get  star ted,  Bret t ".replace(/(\S)\s(\S)|\s$/g, '$1$2')

答案 2 :(得分:1)

基于表达贪婪,这是一个可行的解决方案:

"Okay,  let ’s  get  star ted,  Bret t ".replace(/(\s{2,})|\s/g, '$1')

如果可能,它匹配两个或多个空格,替换为$1,有效地回退到没有任何内容替换单个空格。

答案 3 :(得分:0)

/([^\s]\s{1}[^\s])|\s$/g

将解决您的问题

\s用于一个空格

^\s用于非空格

{1}是一个quatifier,它将数字称为一个

http://regex101.com/r/uO3iJ4