gpt4 book ai didi

javascript - 正则表达式:删除前导零,但保留单个零

转载 作者:行者123 更新时间:2023-12-04 16:00:05 28 4
gpt4 key购买 nike

我有一个输入字段,我绑定(bind)了一个格式化函数,只要该字段失去焦点,就会触发该函数。

我的目标是从输入中删除所有前导零,并且我确实通过下面的行实现了这一点。但是,当用户想要输入单个 0 或类似 0000 的内容时,我仍然希望该字段以值 0(单个)结尾。与 .replace(/^0+/, '')它将删除每个零并仅返回一个空字符串。有人知道什么正则表达式可以处理这个?

const formatNumber = ($field) => {
var number = $field.val().replace(/\./g, '').replace(/\s/g, '').replace(/^0+/, '');
return number;
};

注意 : if(number === "") number = "0"不是一种选择。

编辑1: : 我注意到似乎有点困惑。例如,“0009825”需要变为 9825 而不是 09825。我想要一个 0 的唯一实例是值为零时。

最佳答案

您可以使用此正则表达式替换:

.replace(/^(?:0+(?=[1-9])|0+(?=0$))/mg, '')

RegEx Demo

正则表达式详细信息:
  • ^ : 开始
  • (?: : 开始捕获组
  • 0+(?=[1-9]) : 匹配 1 个或多个必须后跟 1-9 的零
  • | : 或
  • 0+(?=0$) : 匹配 1 个或多个必须后跟一个 0 的零并结束
  • ) : 结束捕获组

  • 替换为空字符串,将留下一个 0如果字符串中只有零,否则将删除前导零。

    替代解决方案使用捕获组:
    str = str.replace(/^0+(0$|[1-9])/mg, '$1');

    关于javascript - 正则表达式:删除前导零,但保留单个零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60509557/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com