Javascript 正则表达式删除小数点后的尾随零

Javascript regex remove trailing zeroes after decimal

我知道这个问题已经被问过很多次了,我确实找到了解决方案,value.replace(/^([\d,]+)$|^([\d,]+)\.0*$|^([\d,]+\.[0-9]*?)0*$/, "")

但是...我不是正则表达式专家,所以我很好奇为什么这不起作用 /[\.0]+$/...10 应该 return 10 但我不能'不知道如何排除以 0 结尾的整数。

1.7500、1.1010、1.0000、10

1.75, 1.101, 1, 1

您可以缩短模式以匹配仅包含零的点,或者使用捕获组对数字进行非贪婪匹配并匹配可选的尾随零。

如果你想匹配数字和逗号,第一个 \d+ 也可以是 [\d,]+,因为你已经在你的模式中。

如果点后至少要有一个数字,那么量词可以是加号.\d+?

^(\d+)(?:\.0+|(\.\d*?)0+)$

看到一个regex 101 demo

[
  "1.7500",
  "1.1010",
  "1.0000",
  "10"
].forEach(s =>
  console.log(s.replace(/^(\d+)(?:\.0+|(\.\d*?)0+)$/, ""))
);