我有一个输入框,我绑定了一个格式化函数,该函数会在该字段失去焦点时触发。
我的目的是从输入中删除所有前导零,并且我已经通过以下行实现了这一点。然而,当用户想要输入单个0或类似0000的内容时,我仍希望该字段以0(单个)的值结束。使用
注意:不能使用
编辑1:我注意到有些人可能会感到困惑,例如“0009825”需要变成“9825”,而不是“09825”。唯一需要在前面加0的情况是当值为零时。
我的目的是从输入中删除所有前导零,并且我已经通过以下行实现了这一点。然而,当用户想要输入单个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{2,}/, '');
。 - anubhava.replace(/^0+/, '0')
?如果你想保留一个单独的0
,你不应该用空字符串替换开头的所有 1 个或多个零,而是用一个单独的0
替换。 - Wiktor Stribiżew.replace(/^(0+)(\d+)$/, '\2')
- tst$
,/^0+$/
,告诉正则表达式仅匹配一个或多个零的字符串。 - Wiktor Stribiżew