wbr2005
2010-01-20 15:27
浏览 1.2k

正则表达式,如何限定输入的是浮点数,且整数位8位,小数位2位

正则表达式,如何限定输入的是浮点数,且整数位8位,小数位2位,数据库对应字段为Numric(10,2)。现在要求如果只输入整数的话,只允许输入8位,如:12345678,如果带小数的话,整数位也最多8位,但可以加小数点后2位,如12345678.12是符合要求的,现在不知道正则表达式该如何写。 [color=red]/\d{1,8}.{0,1}\d{0,2}/[/color]如果这样写的话,可以输入10位整数,[color=red] /\d{1,8}.\d{0,2}/[/color]如果这样写,文本框中无法输入任何字符。希望有人指点一下。谢谢。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • mginobili 2010-01-20 16:19
    已采纳

    [code="js"]
    function CheckInputFloat(input) {
    var reg = /\d{1,8}.{0,1}\d{0,2}/;

    if (reg.test(input))

    {

    if(input.indexOf('.') != -1)
    {
    return true;
    }
    }
    return false;
    }
    [/code]
    另外把这个事件绑定到控件的onblur上

    点赞 打赏 评论
  • mginobili 2010-01-20 15:37

    [code="js"]/(\d{1,8}.{0,1}\d{0,2})|(\d{1,8}.\d{0,2})/[/code]

    点赞 打赏 评论
  • mginobili 2010-01-20 15:41

    不好意思 刚错了
    [code="js"]
    /(\d{1,8})|(\d{1,8}.\d{0,2})/
    [/code]

    点赞 打赏 评论
  • wanghaolovezlq 2010-01-20 15:43

    /(\d{1,8})|(\d{1,8}\.\d{0,2})/

    点赞 打赏 评论
  • wanghaolovezlq 2010-01-20 15:56

    这个可以的
    /(\d{1,8})|(\d{1,8}\.\d{0,2})/

    把你代码粘出来

    点赞 打赏 评论
  • mginobili 2010-01-20 15:57

    我测试了 但是没有出现lz的错误
    代码如下
    [code="js"]
    var reg = /(^\d{1,8})|(^\d{1,8}.\d{0,2})/;
    if (!reg.test("22222222a2.2"))
    {
    alert("error");
    }
    [/code]

    但是这个还是有问题
    因为测试例子中的22222222a2.2明明是错误的
    确因为匹配了前面的22222222而返回正确的结果

    点赞 打赏 评论
  • wanghaolovezlq 2010-01-20 16:08

    最大长度应该是10吧 maxlength=10

    点赞 打赏 评论
  • mginobili 2010-01-20 16:11

    如果lz不介意的话可以采用 /\d{1,8}.{0,1}\d{0,2}/匹配

    匹配成功后 再check是否有'.',如果没有 一样返回匹配失败 呵呵

    点赞 打赏 评论
  • wanghaolovezlq 2010-01-20 16:13

    你想要实现的效果是怎样的,看你那方法太怪了,

    怎么还是绑定在onpropertychange事件上?

    点赞 打赏 评论
  • xxxxxxxxxxxxxxxxx 2010-01-20 16:18

    正则没有办法解决长度匹配的问题。
    把 要解析的分2部分处理吧。
    var re=/./;
    var num='12345678.213';
    var result= num.split(re);
    alert( !isNaN(num) && result[0].length <=8 && ( !result[1] || result[1].length <=2 ) );

    点赞 打赏 评论
  • wanghaolovezlq 2010-01-20 16:44

    CheckInputFloat(oInput) 这个方法导致了死循环就出了stack overflow at line 0的问题

    点赞 打赏 评论

相关推荐 更多相似问题