【发布时间】:2020-03-03 14:35:58
【问题描述】:
我有一个输入字段,我绑定了一个格式化函数,每当该字段失去焦点时就会触发该函数。
我的目标是从输入中删除所有前导零,并且我确实通过以下行实现了这一点。但是,当用户想要输入单个 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" 不是一个选项。
edit1::我注意到似乎有些混乱。例如,“0009825”需要变为 9825 而不是 09825。我想要一个 0 的唯一实例是值为零时。
【问题讨论】:
-
使用
.replace(/^0{2,}/, ''); -
.replace(/^0+/, '0')?如果要保留单个0,则不应将开头的所有 1+ 零替换为空字符串,而应替换为单个0。 -
你也可以把它绑在字符串的末尾。不确定这是否可行,因为我不是 javascript 开发人员,但在这里您匹配所有前导 zeor 和任何后续数字字符串。第二组现在将匹配单个零或任何其他数字,然后您可以使用它来覆盖字符串。
.replace(/^(0+)(\d+)$/, '\2') -
@wiktor 在“004560”的情况下,我不想要一个零。仅当输入的值为 0 或多个零时。
-
然后添加
$,/^0+$/,告诉正则表达式只匹配一个1+零字符串
标签: javascript regex