gpt4 book ai didi

javascript - 如果字符串包含超过 2 位小数,则用于替换字符串的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:38:59 24 4
gpt4 key购买 nike

我有这个用户价格输入,我想允许 0、1 或 2 个小数位。

  • 我使用逗号表示小数。
  • 我没有使用也不允许使用千位分隔符。

问题:

如果用户输入第三位小数,我想替换输入。

类似于:

  • 5没关系
  • 5,没关系,因为它正在等待小数
  • 5,5 没问题
  • 5,55 没问题
  • 5,555 这不对,我想删除最后一位并返回到 5,55
  • 5,555555555555 这也不行,用户可能会粘贴带有额外小数位的内容,我想将它们减少到最多 2 位小数,再次回到 5,55

我该怎么做?

我知道如何匹配字符串的结尾:/[,\d+]$/

但是如何替换逗号后的前两位数字呢?

最佳答案

您的模式 [,\d+]$ 将匹配逗号、数字或加号并断言字符串的结尾。

您可以在一组中捕获 1+ 个数字、一个可选的逗号和 0-2 个数字。之后再匹配0+个数字,替换为第1组。

^(\d+,?\d{0,2})\d*$

解释

  • ^ 字符串开始
  • ( 捕获组 1
    • \d+ 1+ 位
    • ,? 可选逗号
    • \d{0,2} 0 - 2 位数字
  • ) 关闭群组
  • \d* 匹配0+个数字
  • $ 断言字符串结束

Regex demo

如果要保留小数点前的部分,可以使用捕获组^(\d+),?\d{0,2}$ 并替换为第一个捕获组:

[
"5",
"5",
"5,0",
"5,00",
"5,000"
].forEach(s => console.log(s.replace(/^(\d+,?\d{0,2})\d*$/, "$1")));

关于javascript - 如果字符串包含超过 2 位小数,则用于替换字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56381354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com