【问题标题】:REGEX - Remove decimals from stringREGEX - 从字符串中删除小数
【发布时间】:2020-10-30 03:21:42
【问题描述】:

我正在寻找一些 REGEX 或 JS 中的其他方式如何从字符串中删除十进制数字。

示例输入:

Mazda 6 2.0 Skyactiv-G Wagon 2018 - Startstop.sk - TEST
Mercedes C63 AMG Sound REVVING 6,3l V8 

示例输出:

Mazda 6 Skyactiv-G Wagon 2018 - Startstop.sk - TEST
Mercedes C63 AMG Sound REVVING l V8 

我看到的每一个地方,人们都希望保留整数和小数,只删除字符串。但我想保留所有整数只删除小数(用逗号, 或点.

我尝试了类似的方法:

var string = "Mazda 6 2.0 Skyactiv-G Wagon 2018 - Startstop.sk - TEST"
parseFloat(string.match(/[\d\.]+/))
// Result is 6

但这实际上只是再次删除除整数之外的所有内容。

【问题讨论】:

  • 匹配 1 个或多个数字后跟以点或逗号开头的小数部分 \d+(?:[.,]\d)+
  • 6,3l?这是一个小写的“L”字符。这是故意的还是应该是 1(数字一)? re.sub(r"\b\d+[.,]\d+\b ?", "", s)?
  • 它是小写 L 表示它有多少升 :)
  • @Thefourthbird 看来你的答案是唯一的,所以请随意写它,因为不是评论,我会接受它
  • 可能有重复的问题,例如stackoverflow.com/questions/7886593/…

标签: javascript node.js regex


【解决方案1】:

您可以使用 character class [,.] 匹配 bot 点和逗号,并匹配其前后的 1 个或多个数字。

您可以使用string.replace 并在替换中使用空字符串来代替string.match

匹配可选的前导空白字符以防止仅删除数字后出现双空格:

\s*\d+[.,]\d+

Regex demo

var string = "Mazda 6 2.0 Skyactiv-G Wagon 2018 - Startstop.sk - TEST"
string = string.replace(/\s*\d+[.,]\d+/g, "");
console.log(string);

或匹配1次或多次点或逗号后跟1个或多个数字,您可以使用重复的非捕获组:

\s*\d+(?:[.,]\d+)+

【讨论】:

    【解决方案2】:

    你可以试试\s\d*\.\d+\s

    在哪里

    \s - 匹配任何空白字符

    \d* - 匹配零到无限次之间的数字(等于 [0-9])

    \. - 从字面上匹配字符 .

    d+ - 匹配数字(等于 [0-9])一次到无限次

    var string = `Mazda 6 2.0 Skyactiv-G Wagon 2018 - Startstop.sk - TEST
    Mercedes C63 AMG Sound REVVING 6,3l V8`
    console.log(string.replace(/\s\d*\.\d+\s|\s\d*,\d+/gm, ' '));

    【讨论】:

    • 结果应该是Mazda 6 Skyactiv-G Wagon 2018 - Startstop.sk - TEST 而不是2
    • @Andurit,你是对的,更新了答案,谢谢:)
    • 感谢@Mamun,但这仅适用于.,不适用于,。作为我的第二个例子Mercedes C63 AMG Sound REVVING 6,3l V8
    • @Andurit,我已经更新了答案,请检查:)
    • 谢谢,我给你竖起大拇指的正确答案,但我决定接受其他答案,因为它是第一个 :)
    【解决方案3】:
    var string = "Mazda 6 2.0 Skyactiv-G Wagon 2018 - Startstop.sk - TEST";
    regex = /\d+(\.\d+)/g;
    string = string.replace(regex, "");
    console.log(string);
    

    结果:

    Mazda 6  Skyactiv-G Wagon 2018 - Startstop.sk - TEST
    

    解释:

    \d :  Matches any digit character (0-9).
    + :   Match 1 or more of the preceding token.
    [\.,] : Match "." character  or "," character.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-16
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多