验证百分比值

时间:2016-10-17 11:54:01

标签: javascript

我正在验证百分比值:

validateFloatValue: function(value) {
    var number = parseFloat(value);
    if (isNaN(number)) {
        console.log("Invalid value");
    } 
}

基本上,值以字符串形式传递。它通过" 33.45"这很好。但是,我不想让用户输入" 33.45%"。但是,在这种情况下," 33.45%"没有错误。因为parseFloat正在转换" 33.45%"至33.45 parseFloat("33.45")。如果值为" 33.45%"?

,如何抛出错误

3 个答案:

答案 0 :(得分:2)

您最终可以排除所有与正则表达式不匹配的内容...例如value不匹配\d[.,]+\d您应该编写符合您需求的正则表达式;)

(function validateFloatValue(value) {
    var number = parseFloat(value);
    if (! /^\d+[., ]+\d+$/.test(value) || isNaN(number)) {
      document.getElementById('res').innerHTML = "Invalid value";
    }
})("12.34%");
<div id=res></div>

答案 1 :(得分:0)

Number.isFinite稍微更严格地验证输入:

validateFloatValue: function(value) {
    if (!Number.isFinite(number)) {
        console.log("Invalid value");
    } 
}

您也可以直接使用isNaN - 它会更便携:

validateFloatValue: function(value) {
    if (isNaN(number)) {
        console.log("Invalid value");
    } 
}

答案 2 :(得分:0)

如果您只检查字符串是否包含%,则可以像这样使用indexOf。

if (value.indexOf('%') === -1) {

} else {
  console.log("Invalid value");
}

如果要检查字符串是否为数字,可以尝试使用数字函数将字符串转换为数字。

如果该值无法转换为合法号码,则返回NaN(非数字)。

所以你只需要使用isNaN函数验证结果是否为NaN:

var valueNumber = Number(value);

if (!isNaN(valueNumber)) {

} else {
  console.log("Invalid value");
}