从字符串中删除点和空格

Posted

技术标签:

【中文标题】从字符串中删除点和空格【英文标题】:Remove dots and spaces from strings 【发布时间】:2021-01-27 04:56:47 【问题描述】:

我想用正则表达式 text.replace(/[ .]+/g, '') 删除点 . 和空格

这是一个 8 字符串 12.34.5678;这是另一个 13 字符串 1234 5678 9123 0 好吗?

但主要问题是它从句子中删除了所有点和空格。

这是一个8-string12345678;这是另一个13-string1234567891230好吗?

8 字符串 12.34.5678 另一个 13 字符串 1234 5678 9123 0

需要转换成。

8 字符串 12345678 另一个 13 字符串 1234567891230

所以这句话是:

这是一个 8 字符串 12345678;这是另一个 13 字符串 1234567891230 好吗?

我做错了什么?我坚持寻找/匹配正确的解决方案。

【问题讨论】:

【参考方案1】:

你可以使用

s.replace(/(\d)[\s.]+(?=\d)/g, '$1')
s.replace(/(?<=\d)[\s.]+(?=\d)/g, '')

请参阅regex demo。

详情

(\d) - 组 1(替换模式中的$1 是组的值):一个数字 [\s.]+ - 一个或多个空格或. 字符 (?=\d) - 确保下一个字符是数字的正向前瞻。

查看 javascript 演示:

const text = 'This is an 8-string 12.34.5678; and this is another 13-string 1234 5678 9123 0 okay?';
console.log(text.replace(/(\d)[\s.]+(?=\d)/g, '$1'));

【讨论】:

很好,感谢您的详细解释。但是当一个单词/字母紧跟在一个字符串/数字之后该怎么办,比如“12.34.5678and this is another1234 5678 9123 0okay?” @RRG 那你有什么期待呢? 我希望它是这样的“12345678,这是另一个 1234567891230 好吗?”我总是想要一个空格,在第一个和最后一个数字之前。因此,当文本意外地有一个字母与 /\d+/g jsfiddle.net/rrggrr/qmurjtgf 之类的数字连接时,它不会发生冲突 @RRG 见jsfiddle.net/wiktor_stribizew/6tmyg28n/1

以上是关于从字符串中删除点和空格的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL Server 中的字符串中删除所有空格

为啥我的 if 函数没有从字符串中删除空格?它不能检测 C++ 中的空格输入吗?有没有办法从输入中删除空间

从字符串中删除空格

使用 vba 从字符串中删除空格

如何从字符串中删除所有空格

从C中的字符串中删除空格