如何使用Javascript验证数字对0.5增量

时间:2014-10-09 15:10:17

标签: javascript regex

我尝试使用0.5增量来验证javascript字符串。所以对于exmaple ..

var number = 1      //true
var number = 1.2    //false
var number = 1.5    //true
var number = 2.8    //false
var number = 4      //true
var number = 0.5    //true
var number = 10.4   //false

我想知道是否有人可以帮我开始这样的事情。或许可以参与正则表达式吗?

function validateNumber(value){
    //Do validation
}

感谢您的阅读。

4 个答案:

答案 0 :(得分:10)

您可以使用返回余数的模数运算符%

function validateNumber(value){
   return value % 0.5 == 0; 
}

答案 1 :(得分:2)

由于时间2是最有效的操作之一,这可能比使用%:

更快
function validateNumber(value) {
   return 2*value==Math.round(2*value)
}

更快的版本,无需调用。

(因此,这是答案的最快解决方案:http://jsperf.com/modulus-vs-times2

function validateNumber(value) {
   return 2*value==2*value>>0
}

答案 2 :(得分:0)

\d*\.?5?

试试这个。这很有效。

参见演示。

http://regex101.com/r/qZ0uP0/3

答案 3 :(得分:0)

这太过分了,但可以使用HTML5验证来完成:

var validateNumber = (function() {
    var inp = document.createElement('input');
    inp.type = 'number';
    inp.step = 0.5;
    return function validateNumber(value) {
        inp.value = value;
        return !inp.validity.stepMismatch;
   };
})();

当然,在实践中使用@AmitJoki's answer