Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当输入小数点时,如何使用正则表达式保持0开始字符?_Javascript_Regex - Fatal编程技术网

Javascript 当输入小数点时,如何使用正则表达式保持0开始字符?

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

我使用此代码替换非数字字符,当数字以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" 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
,该值在满足替换的第二方时具有值。

不是选项吗?