从字符串中删除点和空格
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 字符串这是一个8-string12345678;这是另一个13-string1234567891230好吗?
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以上是关于从字符串中删除点和空格的主要内容,如果未能解决你的问题,请参考以下文章