使用正则表达式,如何删除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 />');