Javascript正则表达式-删除单空格而不是双空格
我需要从字符串中删除单空格,但不能删除双空格 使用regex我已经尝试过了,但是它是无效的,我不知道如何修复它:Javascript正则表达式-删除单空格而不是双空格,javascript,regex,Javascript,Regex,我需要从字符串中删除单空格,但不能删除双空格 使用regex我已经尝试过了,但是它是无效的,我不知道如何修复它: \s+{1,1} 这就是我想要实现的目标: 原始字符串: "Okay, let ’s get star ted, Bret t " 在regex replace之后(保持双倍间距): 由于JavaScript不支持lookbehinds,我相信您必须求助于回调函数: str = str.replace(/\s+/g, function(m) { return m.
\s+{1,1}
这就是我想要实现的目标:
原始字符串:
"Okay, let ’s get star ted, Bret t "
在regex replace之后(保持双倍间距):
由于JavaScript不支持lookbehinds,我相信您必须求助于回调函数:
str = str.replace(/\s+/g, function(m) {
return m.length === 1 ? '' : m;
});
你可以用这个:
"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')
基于表达贪婪,这是一个可行的解决方案:
"Okay, let ’s get star ted, Bret t ".replace(/(\s{2,})|\s/g, '$1')
如果可能的话,它匹配两个或多个空格,替换为$1
,实际上返回到不替换单个空格
/([^\s]\s{1}[^\s])|\s$/g
这会解决你的问题
\s
代表一个空格
^\s
不代表空格
{1}
是一个四元数,告诉数字为一
我只想补充一点:再次检查空格是否是第一个字符,或者前面是否有非空白字符,后面是否有空格<代码>“好的,让我们开始明星特德,布雷特t”。替换(/(^ |\s)\s(?!\s)/g,'1')代码>+1对于回调解决方案,我认为您错过了
g
修饰符:)我确实错过了。谢谢那也很酷。你甚至不需要第二个捕获组<代码>\s{2}如果OP真的想只替换单个空格,那么可能必须将其更改为\s{2,}
。[^\s]
也是\s
,而有了这个替换,它基本上是xdazz答案的第一个版本。哦,我想这只是一种说法。有些人不知道一切。我想说的是,这有一个问题,就是不能从字符串的末尾删除空格:)
/([^\s]\s{1}[^\s])|\s$/g