jQuery US货币验证regEx也允许整数

时间:2009-05-29 16:16:55

标签: jquery regex validation

我有这个正则表达式,但现在需要允许没有小数的数字

// Validate for 2 decimal for money
jQuery.validator.addMethod("decimalTwo", function(value, element) {
    return this.optional(element) || /^(\d{1,3})(\.\d{2})$/.test(value);
}, "Must be in US currency format 0.99");

目前这会强制用户至少将.00添加到一个数字,希望它允许当前的正则表达式和没有小数的整数。

我会加上吗?在RegEx的下半部分结束?

// Validate for 2 decimal for money
jQuery.validator.addMethod("decimalTwo", function(value, element) {
    return this.optional(element) || /^(\d{1,3})(\.\d{2})?$/.test(value);
}, "Must be in US currency format 0.99");

编辑:

好的,但如果有人输入1.2怎么办?

5 个答案:

答案 0 :(得分:14)

如果你想要的是1,1.2和1.20全部工作:

/^(\d{1,3})(\.\d{1,2})?$/

答案 1 :(得分:2)

是的,只需添加一个?到第二个分组的结尾,使其成为可选的。这应该很好。

答案 2 :(得分:0)

$.validator.addMethod("money", function (value, element) {
     if ($("#<%= rdOtherAmt.ClientID %> input:checked")) {
         return this.optional(element) || /^((\d{1,5})+\.\d{2})?$|^\$?[\.]([\d][\d]?)$/.test(value);
     }                 
});

这将完美地工作,需要两位小数。

答案 3 :(得分:0)

这是我们用于正则表达式货币输入的最佳,全面的答案,其中包含我们所需的全部内容:/(?=。)^\ $?(([1-9] [0-9] {0 ,2}([0-9] {3})*)|??[0-9] +)([0-9] {1,2})$ /

答案 4 :(得分:0)

我想测试一下keyup。因此我需要接受999,999。在输入第一个小数位(十分之一)之前。但是,我仍然想要最多2位小数(百分位) - 假设在我的代码中输入了999.1 == 999.10。

var currencywithcommas = /^(\d+|\d{1,3}(,\d{3})*)+(\.\d{2})?$/;
if ($("#yourelement").val().match(currencywithcommas)) {
  // positive match code
}

更新: 由于实现,我最终使用了jQuery Validation Plugin。

原型代码:

jQuery.validator.addMethod("currencywithcommas", function (value, element) {
    var currencywithcommasReg = /^(\d+|\d{1,3}(,\d{3})*)+(\.\d{2})?$/;
    return this.optional(element) || value.match(currencywithcommasReg);
}, "Must be in US currency format 9.99");

实现:

    $("#form1").validate({
        rules: {
            amount1: {
                required: true,
                currencywithcommas: true
            },
...

相同的概念,但扩展为使用验证功能。

$(".reqField1").each(function () {
    $(this).keyup(function () {
        $("#submitButton").prop("disabled", CheckInputs(".reqField1"));
    });
});

function CheckInputs(reqfldclass) {
    var valid = false;
    $(".reqField1").each(function () {
        if (valid) { return valid; }
        var input = $.trim($(this).val());
        valid = !input;
    });
    return valid;
}

而且,Bob是你的叔叔......