从字符串中删除多余的零

jun*_*lin 1 javascript regex

我知道从字符串中删除前导零的方法:

'000100'.replace(/^0+/, '')
Run Code Online (Sandbox Code Playgroud)

但是,如果是类似浮点的字符串(例如“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'
Run Code Online (Sandbox Code Playgroud)

假设字符串:

  • 仅包含数字或点或负号“-”,不包含字符和其他字符。
  • 小数点不会出现在字符串的前面。最多为一。
  • 负号“-”将出现在正常位置。并且“-”前后没有多余的零。
  • 字符串表示的浮点数可能大于Number.MAX_SAFE_INTEGER
  • 正浮动和负浮动都是可能的。

用于过滤额外零的函数可能相对简单并且步骤也更多。

正则表达式会更简单。

rev*_*evo 5

正则表达式:

^0+(?!\.)|(?:\.|(\..*?))0+$
Run Code Online (Sandbox Code Playgroud)

现场演示

分解:

  • ^0+(?!\.)匹配不满足小数点的前导零
  • |或者
  • (?:非捕获组的开始
    • \.匹配小数点
    • |或者
    • (\..*?)捕获数字前面的小数点
  • )NCG 结束
  • 0*$匹配尾随零

JS代码:

^0+(?!\.)|(?:\.|(\..*?))0+$
Run Code Online (Sandbox Code Playgroud)