javascript – 如何验证小数值输入?

目前仅处理十进制值,在文本字段中用户只输入deciaml值.应该只接受10个数字,例如,如果用户输入12345.000000,它应该得到一个警告说数字字段格式错误.请使用正确的格式重新输入. (6.3)

使用我当前的jquery代码,它将接受十进制值

$("#txtQty").keyup(function() {
var $this = $(this);
$this.val($this.val().replace(/[^\d.]/g, ''));        
});

这是我用html文本框的html代码,它只允许10个字符

<input id="txtQty" type="text" maxlength="10"/>

我厌倦了下面的SO用户告诉我,但我仍然遇到同样的问题

   $('#txtQty').focusout(function(e) {
   if('123456.789'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null){
      alert("Number field format error. Please re-enter using the proper format. (6.3)");  
   }else{
       '123456.7890'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null
   }
});

在小数点之前它必须接受(1-6)小数点后6位数它必须接受3只有零如果错误输入它应该抛出一个警报根本没有工作仍然没有得到那个

这是相同的fiddle link

123456.000 – 是的
12345.000 – 是的
1234.000 – 是的
123.000 – 是的
12.000 – 是的
1.000 – 真的

提前致谢

$('.ipt_Havg').focusout(function (e) {
var regexp = /\d*\.\d{3}/
if (document.getElementById("ipt_Havg").value !== regexp) {
    alert("Number field format error. Please re-enter using the proper format. (6.3)");
} else {
    alert('nothing wrong here');
}
});

最佳答案 您可以在RegExps中指定重复:

'123456.789'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null
true
'123456.7890'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null
false
点赞