javascript - 从字符串中删除多余的零

标签 javascript regex

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

'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+$

Live demo

分割:

  • ^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/

相关文章:

javascript - Material AngularJS ngShow 和 ngHide

javascript - 如何在javascript中替换特定索引后的字符串

c# - 匹配行尾或其他字符

c# - 逗号分隔字符串的正则表达式匹配

regex - 识别字符串中的地址编号

asp.net - 更改 asp :CheckBox when clicked 的文本

javascript - 在 HTML 中显示计算结果 (javascript)

javascript - 自定义滚动条

javascript - 正则表达式匹配聊天室字符串中的非法字符

php - 使用 PHP 匹配 html <body> 标签之间的所有内容