【问题标题】: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 好吗?

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

【问题讨论】:

    标签: javascript regex regexp-replace


    【解决方案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 之类的数字连接时,它不会发生冲突
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2017-11-20
    相关资源
    最近更新 更多