【问题标题】:Check if an input string is a positive int/float number检查输入字符串是否为正整数/浮点数
【发布时间】:2017-12-05 19:50:45
【问题描述】:

在我的网页上有一个输入框,应该只允许用户输入正整数/浮点数(即 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,因此验证失败。

关于我应该如何解决这个问题的任何建议?使用正则表达式是唯一的方法吗?

提前感谢您的帮助!

【问题讨论】:

标签: javascript string validation numbers decimal


【解决方案1】:

您只需将!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.37'); // false: "37.37" 被转换为不是 NaN 的数字 37.37

如您所见,它适用于浮点数。

【讨论】:

  • 谢谢!效果很好!并感谢您的解释。
猜你喜欢
  • 2020-06-27
  • 2019-10-05
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
相关资源
最近更新 更多