我知道从字符串中删除前导零的方法:
'000100'.replace(/^0+/, '')
但是如果像字符串一样的 float (例如 '00100.2300' 或 '00100'),如何从中删除所有多余的零?
'00100.2300' => '100.23'
'00100' => '100'
'00100.0023' => '100.0023'
'100.00' => '100.' or '100' will better
'-100.002300' => '-100.0023'
'0.50' => '0.5'
假设字符串:
- 只包含数字或点或负号'-',不包含字符和其他。
- 小数点没有出现在字符串的最前面。最多一个。
- 负号'-'会出现在正常位置。并且“-”前后没有额外的零。
- 字符串表示的 float 可能大于
Number.MAX_SAFE_INTEGER
- 正浮点和负 float 都是可能的。
用于过滤多余零的函数可能相对简单,步骤也更多。
而且正则表达式会更简单。
最佳答案
正则表达式:
^0+(?!\.)|(?:\.|(\..*?))0+$
分割:
^0+(?!\.)
匹配不符合小数点的前导零|
或者(?:
非捕获组的开始\.
匹配一个小数点|
或者(\..*?)
捕获数字前的小数点
)
NCG 结束0*$
匹配尾随零
JS代码:
var str = `00100.2300
00100
00100.0023
100.00
100.
00.50
0.5`;
console.log(
str.replace(/^0+(?!\.)|(?:\.|(\..*?))0+$/gm, '$1')
)
关于javascript - 从字符串中删除多余的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50317500/