Javascript 正则表达式:删除前导零,但保留单个零
我有一个输入字段,它绑定了一个格式化函数,每当字段失去焦点时就会触发该函数 我的目标是从一个输入中删除所有的前导零,我用下面的一行实现了这一点。但是,当用户想要输入单个0或类似0000的值时,我仍然希望该字段以值0(单个)结尾。使用Javascript 正则表达式:删除前导零,但保留单个零,javascript,regex,Javascript,Regex,我有一个输入字段,它绑定了一个格式化函数,每当字段失去焦点时就会触发该函数 我的目标是从一个输入中删除所有的前导零,我用下面的一行实现了这一点。但是,当用户想要输入单个0或类似0000的值时,我仍然希望该字段以值0(单个)结尾。使用.replace(/^0+/,“”)它将删除每个零并返回一个空字符串。有人知道什么regex可以处理这个 const formatNumber = ($field) => { var number = $field.val().replace(/\./g, ''
.replace(/^0+/,“”)
它将删除每个零并返回一个空字符串。有人知道什么regex可以处理这个
const formatNumber = ($field) => {
var number = $field.val().replace(/\./g, '').replace(/\s/g, '').replace(/^0+/, '');
return number;
};
注意:如果(number==“”)number=“0”
不是选项
edit1::我注意到这里似乎有点混乱。e、 g“0009825”需要变成9825,而不是09825。我只想在值仅为零时预先输入0。您可以使用此正则表达式替换:
.replace(/^(?:0+(?=[1-9])|0+(?=0$))/mg, '')
正则表达式详细信息:
:开始^
:启动捕获组(?:
:匹配必须后跟0+(?=[1-9])
1-9
:或|
:匹配一个或多个必须后跟一个0+(?=0$)
并结束的零0
:结束捕获组)
0
,否则将删除前导零
使用捕获组的替代解决方案:
str = str.replace(/^0+(0$|[1-9])/mg, '$1');
具有前导零且与捕获组中的一个数字匹配的
const cleanZeros=str=>str.replace(/^0+(\d)/,“$1”)
var测试=[“0009876”、“0”、“0000”、“9999”、“0090000”]
tests.forEach(s=>console.log(s,cleanzero))
使用。替换(/^0{2,}/,“”)代码>。是否替换(/^0+/,“0”)
?如果要保留单个0
,则不应将开头的所有1+零替换为空字符串,而应替换为单个0
。还可以将其绑定到字符串的结尾。我不确定这是否可行,因为我不是一名javascript开发人员,但在这里,您可以匹配所有领先的Zeor和以下任何数字字符串。现在,第二个组将匹配单个零或任何其他数字,然后使用第二个组覆盖字符串.replace(/^(0+)(\d+)$/,'\2')
@wiktor在“004560”的情况下,我不希望预先为零。仅当输入的值为0或多个零时。然后添加$
,/^0+$/
,告诉正则表达式仅匹配1+零字符串