检查输入字符串是否为正整数/浮点数

时间:2017-12-05 19:50:45

标签: javascript string validation numbers decimal

在我的网页上有一个输入框,只允许用户输入正的int / float编号(即1234,123.4,12.34,1.234都应该被允许)。

为了确保该值有效,我有一个函数在将值发送到服务器之前验证该值:

function isPositiveFloat(s){
    return String(Number(s)) === s && Math.floor(Number(s)) > 0;
}

该功能对于一种情况非常有用:isPositiveFloat(1.0)将返回false,因为事实证明Number(1.0)会将其转换为1,因此验证失败。

有关如何解决此问题的任何建议?使用正则表达式是唯一的方法吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您只需使用!isNaN(s)Number(s)>0

function isPositiveFloat(s) {
  return !isNaN(s) && Number(s) > 0;
}

<强>演示:

function isPositiveFloat(s) {
  return !isNaN(s) && Number(s) > 0;
}
<input type="text" onchange="console.log(isPositiveFloat(this.value))" />

您可以查看以下MDN reference of isNaN()示例:

  

isNaN('37 0.37' ); // false:“37.37”被转换为数字37.37,而不是NaN

所以你可以看到它会在你的情况下使用浮点数。