条件:只能输入0到24,且是0.5的倍数,例如:0,0.5,1.0,1.5这种;[总之小数点右边只能是5或0,且大小在0到24]
谢谢各位大侠,请贴代码

解决方案 »

  1.   

    /^(?!24\.5)([1-2][0-4]|\d)\.[05]$/.test(...)
      

  2.   

    如果不要求保留小数点后1位的话:
    /^(?!24\.5)([1-2][0-4]|\d)(\.[05])?$/.test(...)
      

  3.   


    /^(?!24\.5)(2[0-4]|1?[0-9])(\.[05])?$/.test(...)
      

  4.   

    var arr = [11.3,32,14.5,15,9,25,23,24];
    var pattern = /^(([0-1]?\d)|(2[1-3]))(\.5)?$/;
    for( var i = 0 ; i <arr.length ; i++){
      alert(arr[i]+" : "+pattern.test(arr[i]));
    }
      

  5.   

    var test = function(reg, cases){
        var i, kiss, len = cases.length;
        
        for(i = 0; i < len; i++){
            kiss = cases[i];
            if(!reg.test(kiss.expr) == kiss.result){
                alert("用例:" + kiss.expr + "没有通过测试!");
                return;
            }
        }    alert('全部用例通过!');
    };var reg = new RegExp(
         "^("
       +    "([0-9](?:\\.5)?)"       //小于10
       +    "|(1[0-9](?:\\.5)?)"     //小于20
       +    "|(24|2[0-3](?:\\.5)?)"  //大于20
       + ")$"
    );var cases = (function(){
        var i, ret = [];    //正确用例
        for(i = 0; i<= 24; i += 0.5){
            ret.push({
                expr   : String(i),
                result : true
            });
        }    //错误用例
        ret = ret.concat(
            {expr : "0.1", result : false},
            {expr : "0.2", result : false},
            {expr : "10.0", result : false},
            {expr : "10.1", result : false},
            {expr : "24.1", result : false},   
            {expr : "24.5", result : false}
        );    return ret;
    })();
    //执行单元测试
    test(reg, cases);
      

  6.   

    有正则处理这类问题倒不是不可以,但等你过几天维护的时候就会感觉很蛋疼。
    把你改不了的代码用到项目的关键路径,就等于自己找麻烦。var test = function(fn, cases){
        var i, kiss, len = cases.length;
        
        for(i = 0; i < len; i++){
            kiss = cases[i];
            if(!fn(kiss.expr) == kiss.result){
                alert("用例:" + kiss.expr + "没有通过测试!");
                return;
            }
        }    alert('全部用例通过!');
    };
    var checker1 = (function(){
        var enables = {};    for(var i = 0; i <= 24; i += 0.5){
            enables[i] = null;
        }    return function(i){
            return enables.hasOwnProperty(i);
        };
    })();var checker2 = (function(){
        var reg = new RegExp(
             "^("
           +    "([0-9](?:\\.5)?)"
           +    "|(1[0-9](?:\\.5)?)"
           +    "|(24|2[0-3](?:\\.5)?)"
           + ")$"
        );    return function(i){
             return reg.test(i);
        }
    })();var cases = (function(){
        var i, ret = [];    //正确用例
        for(i = 0; i<= 24; i += 0.5){
            ret.push({
                expr   : String(i),
                result : true
            });
        }    //错误用例
        ret = ret.concat(
            {expr : "0.1", result : false},
            {expr : "0.2", result : false},
            {expr : "10.0", result : false},
            {expr : "10.1", result : false},
            {expr : "24.1", result : false},   
            {expr : "24.5", result : false}
        );    return ret;
    })();
    //执行单元测试
    test(checker1, cases);
    test(checker2, cases);
      

  7.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <style type="text/css">
    #test{width:400px;height:400px;border:solid 1px #734;overflow:auto;}
    span{width:180px;border:solid 1px blue;float:left;margin:1px;}
    </style>
    <script type="text/javascript">
    var $ =  function(id){ return document.getElementById(id);};
    window.onload = function(){
    var reg =/^(\d|1\d|2[0-3])(\.[05])?$|^24(\.0)?$/;
    for(i=0;i<100;i++)
    {
    var n = Math.random()<.3?Math.round(Math.random()*30)
      :((Math.random()>.3&&Math.random()<.6)?(Math.round(Math.random()*30)+[".0",".5"][Math.random()<.5?1:0])
    :(Math.round(Math.random()*30)+"."+Math.round(Math.random()*16)));
    $("test").innerHTML =$("test").innerHTML+"<span>"+n+"</span><span>"+reg.test(n)+"</span>";
    }
    }
    </script>
    </head>
    <body>
    <div id="test"></div>
    </body>
    </html>
      

  8.   

    有那么麻烦吗  1句话var s="18";
    s = s.match(/^(1?[0-9]|2[0-4])(\.[05])?$/);
    console.log(s == null ? "false" : "true");