Javascript 当输入小数点时,如何使用正则表达式保持0开始字符?
我使用此代码替换非数字字符,当数字以0开头时,如“000001111”或“0000000”,0将被替换。“000001111”更改为“1111”,而“0000000”更改为“0” 但是当我输入一个十进制数时,我想要这个 例如,我输入“00012.340”,保留“12.34”,当我输入“00.00”时保留“0.0”,当我输入“000.0012”时保留“0.0012”。 如何修复我的密码 我的代码:Javascript 当输入小数点时,如何使用正则表达式保持0开始字符?,javascript,regex,Javascript,Regex,我使用此代码替换非数字字符,当数字以0开头时,如“000001111”或“0000000”,0将被替换。“000001111”更改为“1111”,而“0000000”更改为“0” 但是当我输入一个十进制数时,我想要这个 例如,我输入“00012.340”,保留“12.34”,当我输入“00.00”时保留“0.0”,当我输入“000.0012”时保留“0.0012”。 如何修复我的密码 我的代码: <input id="text_target_value" maxlength="11" cl
<input id="text_target_value" maxlength="11" class="text-right number" type="text" onkeyup="value=value.replace(/[^\d]+|^0+(?!$)/g, '')" style="display: inline-block;">
因此,要修剪前导零,如果后跟小数点或字符串结尾,则保留一个前导零,并且要修剪小数点后的尾随零
您可以将非数字、非周期字符与以下字符匹配:
[^\d.]
您可以将不需要的前导零与
^0+(?=0(\.|$)|\d)
换句话说,匹配前导零,后跟0.
,或0
和字符串末尾,或其他数字
以上两种模式可以替换为空字符串
然后,要修剪尾随零,您必须捕获组中的小数点和小数位数,然后匹配尾随零,并替换为第一个捕获的组:
document.querySelector('#text_target_value')。onkeyup=function(){
this.value=this.value
.replace(/[^\d.]+^0+(?=0(\.\124;$)\ 124;\ d)/g',)
//仍然需要在小数点后修剪尾随的零:
.替换(/(\.\d*[1-9])0+$/,“$1”);
}
您不需要多次调用replace()
方法。您可以一步完成:
value.replace(/^0*(?!\.)|(0)0*$/g, '$1');
正则表达式:
^0*(?!\.)|(0)0*$
这将匹配所有不紧跟小数点的前导0
s和所有尾随0
s。然后尝试将整个匹配替换为$1
,该值在满足替换的第二方时具有值。不是选项吗?