求一个判断两位小数的正则

zj25810 2015-06-15 09:18:37
<td>身  高:<input type="text" onkeyup="value=value.replace(/[^\d+\.\d{2}|^\d]/g,'')" />

需要让它能控制输入的小数最多为2个,且第一个字输入的不能为小数点 .

有什么思路么?
...全文
517 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
跳动de指尖 2015-06-16
  • 打赏
  • 举报
回复
引用 23 楼 pengqian098 的回复:

var a = 'abcd';
try{a.toFixed(2)}catch(e){console.info(e)}
catch里面写你处理的代码就好了。
跳动de指尖 2015-06-16
  • 打赏
  • 举报
回复

var a = 'abcd';
try{a.toFixed(2)}catch(e){console.info(e)}
「已注销」 2015-06-16
  • 打赏
  • 举报
回复
在keyup里判断,只要满足下列情况之一的,返回false,1.第一位不是数字,2.小数点后超过两位,3.如果没出现小数点,补.0后不再是数字的
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
看你描述,你是要年月日的正则,不是金额的正则!
tommercatfly 2015-06-15
  • 打赏
  • 举报
回复
你试试看,我改了下你的代码,添加了一条正则,/\d+[A-Za-z]+$/g,目的匹配数字后面存在的字母
tommercatfly 2015-06-15
  • 打赏
  • 举报
回复
$(".t_under1").keyup(function () {         var reg = $(this).val().match(/\d+\.?\d{0,2}/);         if (reg != null) {             if ($(this).attr("f") == "month") {                 if ($(this).val() > 12 || $(this).val() < 0 || $(this).val().match(/\d+[A-Za-z]+$/g) != null) { //console.log("月份范围值为0-12");                     $(this).val("");                     return false;                 }             }             if ($(this).attr("f") == "min") {                 if ($(this).val() > 60 || $(this).val() < 0 || $(this).val().match(/\d+[A-Za-z]+$/g) != null) { // console.log("分钟数范围值为0-60");                     $(this).val("");                     return false;                 }             }         } else {             $(this).val("");         }     })
zj25810 2015-06-15
  • 打赏
  • 举报
回复
$(".t_under1").keyup(function () {
        var reg = $(this).val().match(/\d+\.?\d{0,2}/);
        if (reg != null) {
            if ($(this).attr("f") == "month") {
                if ($(this).val() > 12 || $(this).val() < 0) {
                    artFailure("月份范围值为0-12");
                    $(this).val("");
                    return false;
                }
            }
            if ($(this).attr("f") == "min") {
                if ($(this).val() > 60 || $(this).val() < 0) {
                    artFailure("分钟数范围值为0-60");
                    $(this).val("");
                    return false;
                }
            }
        } else {
            $(this).val("");
        }
    })
居然无法验证类似于 “6a”这样的输入
Go 旅城通票 2015-06-15
  • 打赏
  • 举报
回复
blur的时候替换判断是否符合规则,不符合就置空

<input type="text" onblur="if(!/^\d{2,3}(\.\d{1,2})?$/.test(this.value))this.value=''" />
  • 打赏
  • 举报
回复
^\d+(\.\d{1,2})$
如果只是简单的正则验证话,那上面的就可以了
  • 打赏
  • 举报
回复
如果你是replace,这不是一个正则可以搞定的
  • 打赏
  • 举报
回复
第一个输入小数点,最后一个输入小数点都解决了啊
zj25810 2015-06-15
  • 打赏
  • 举报
回复
正在试 \d{1,9}+\.?\d{0,2}/ 是否可用
zj25810 2015-06-15
  • 打赏
  • 举报
回复
还是只能这样吗?问题是第一个输入小数点还是没能解决
  • 打赏
  • 举报
回复
你是要replace还是正则验证? http://bbs.csdn.net/topics/391039769 8楼最终版
zj25810 2015-06-15
  • 打赏
  • 举报
回复
$(".t_under").keyup(function () {
    var reg = $(this).val().match(/^[0-9]*$/);
    if (reg != null) {
        if ($(this).attr("f") == "year") {
            if ($(this).val() > 100 || $(this).val() < 0) {
                artFailure("年份范围值为0-100");
                $(this).val("");
                return false;
            }
        }
        if ($(this).attr("f") == "month") {
            if ($(this).val() > 12 || $(this).val() < 0) {
                artFailure("月份范围值为0-12");
                $(this).val("");
                return false;
            }
        }
        if ($(this).attr("f") == "day") {
            if ($(this).val() > 7 || $(this).val() < 0) {
                artFailure("天数范围值为0-7");
                $(this).val("");
                return false;
            }
        }
        if ($(this).attr("f") == "hour") {
            if ($(this).val() > 23 || $(this).val() < 0) {
                artFailure("小时数范围值为0-23(23小时60分钟表示24小时)");
                $(this).val("");
                return false;
            }
        }
        if ($(this).attr("f") == "min") {
            if ($(this).val() > 60 || $(this).val() < 0) {
                artFailure("分钟数范围值为0-60");
                $(this).val("");
                return false;
            }
        }
    } else {
        $(this).val("")
    }
});
$(".t_under1").keyup(function () {
    var reg = $(this).val().match(/^[0-9]+\.?[0-9]{0,2}$/);
    if (reg != null) {
        if ($(this).attr("f") == "height") {
            if ($(this).val() > 200) {
                artFailure("身高范围值为120-200");
                $(this).val("");
                return false;
            }
        }
        if ($(this).attr("f") == "weight") {
            if ($(this).val() > 150) {
                artFailure("体重范围值为30-150");
                $(this).val("");
                return false;
            }
        }
    } else {
        var v = $(this).val();
        if ($(this).val().substr(v.indexOf('.')).length > 3) {
            artFailure("仅保留小数后两位");
            $(this).val($(this).val().substr(0, v.length - 1));
            return false;
        }
        $(this).val("");
    }
}).change(function () {
    if ($(this).attr("f") == "height" && $(this).val() != "") {
        if ($(this).val() > 200 || $(this).val() < 120) {
            artFailure("身高范围值为120-200");
            $(this).val("");
            return false;
        }
    }
    if ($(this).attr("f") == "weight" && $(this).val() != "") {
        if ($(this).val() > 150 || $(this).val() < 30) {
            artFailure("体重范围值为30-150");
            $(this).val("");
            return false;
        }
    }
});
zj25810 2015-06-15
  • 打赏
  • 举报
回复
总算是可以了,楼下贴代码。等会结贴散分,谢谢大家。
tommercatfly 2015-06-15
  • 打赏
  • 举报
回复

$(".t_under1").keyup(function () {
        var reg = $(this).val().match(/\d+\.?\d{0,2}/);
        if (reg != null) {
            if ($(this).attr("f") == "month") {
                if(check($(this).val())){
                    if($(this).val() > 12 || $(this).val() < 0){
                        // console.log("月份范围值为0-12");
                        $(this).val("");
                        return false;
                    }
                }else{
                    // console.log("月份范围值为0-12");
                    return false;
                }

            }
            if ($(this).attr("f") == "min") {
                if(check($(this).val())){
                    if($(this).val() > 60 || $(this).val() < 0){
                        // console.log("分钟数范围值为0-60");
                        $(this).val("");
                        return false;
                    }
                }else{
                    // console.log("分钟数范围值为0-60");
                    return false;
                }
            }
        } else {
            $(this).val("");
        }
    })

    var check = function(str){
        var checkstr = '1234567890';
        if(str.length >= 3){
            return false;
        }else{
            if(checkstr.indexOf(str.substr(0,1)) == -1 || checkstr.indexOf(str.substr(1,2)) == -1){
                return false;
            }else{
                return true;
            }
        }
        // console.log(str.length);
    }
那就不要用正则匹配了,你试试看我这边写的判断,可以让你判断月份和日期,只允许是数字,数字只能是2位数。
凤凰涅檠 2015-06-15
  • 打赏
  • 举报
回复
^(?:0|[1-9]\d*)(?:\.\d{2})?$
凤凰涅檠 2015-06-15
  • 打赏
  • 举报
回复
没结再发一个 金额的:^(?:0|[1-9]\d+)(?:\.\d{2})?$
加载更多回复(4)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧