我需要从字符串中删除单个空格,但不是双空格。
使用正则表达式我试过这个,但它无效,我不知道如何解决它:
\s+{1,1}
这就是我想要实现的目标:
原始字符串:
"Okay, let ’s get star ted, Bret t "
正则表达式替换后(保持双倍间距):
"Okay, let’s get started, Brett"
答案 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,它将数字称为一个