使用正则表达式,如何删除1.0000000000e + 12的尾随零?

例如:


1.0000000000e + 12应得出:1e + 12
1.0000000000e12应得出:1e12
1.0000000000e-12应该得到:1e-12
1.1200000000e + 12应得出:1.12e + 12
994.44应达到:994.44

最佳答案

这是一个有点困难的问题,因为您必须确保数字中有一个小数点才能仅消除其中的非有效零(零在小数点的左侧是有效的)。您还必须保留小数点后的有效数字,并仅消除最后的零。另外,并非所有浮点数都以基本指数因子结尾,这是我的方法:

str.replace(/\.([0-9]*[1-9])?0*/g, ".$1");


抱歉,它不能消除小数点,因为它后面可以有有效数字。

RegEx Demo

更新资料

如果您还可以选择删除点,则可以使用下一个正则表达式和模式替换:

str.replace(/(\.[0-9]*[1-9])0*|(\.0*)/, "$1");


Regexp Demo



function removeZeroes(number) {
  return number.replace(/(\.[0-9]*[1-9])0*|(\.0*)/, "$1");
}

document.write(removeZeroes('1.000000000e12') + '<br />');
document.write(removeZeroes('1.000000000e-12') + '<br />');
document.write(removeZeroes('1.000000000E-12') + '<br />');
document.write(removeZeroes('1.001200000e-12') + '<br />');
document.write(removeZeroes('1.120000000e+12') + '<br />');
document.write(removeZeroes('10.120000000e+12') + '<br />');
document.write(removeZeroes('10e12') + '<br />');
document.write(removeZeroes('994.44') + '<br />');
document.write(removeZeroes('994.4400000000') + '<br />');
document.write(removeZeroes('100000000.000') + '<br />');
document.write(removeZeroes('10000000.0') + '<br />');
document.write(removeZeroes('123.00000001230000') + '<br />');

10-06 15:11