jQuery US Currency 验证正则表达式也允许整数

Posted

技术标签:

【中文标题】jQuery US Currency 验证正则表达式也允许整数【英文标题】:jQuery US Currency validation regEx to allow whole numbers as well 【发布时间】:2010-10-29 22:30:24 【问题描述】:

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

// Validate for 2 decimal for money
jQuery.validator.addMethod("decimalTwo", function(value, element) 
    return this.optional(element) || /^(\d1,3)(\.\d2)$/.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) || /^(\d1,3)(\.\d2)?$/.test(value);
, "Must be in US currency format 0.99");

编辑:

好的,但是如果有人进入 1.2 呢?

【问题讨论】:

重新编辑:好吧,如果他们这样做了怎么办?在这种情况下,您并没有告诉我们您希望发生什么。 【参考方案1】:

如果您希望 1、1.2 和 1.20 都能正常工作:

/^(\d1,3)(\.\d1,2)?$/

【讨论】:

天啊,我忙于其他事情,我什至没有想到这一点,哈哈,谢谢【参考方案2】:

是的,只需添加一个 ?到第二组的末尾以使其可选。这应该很好用。

【讨论】:

【参考方案3】:
$.validator.addMethod("money", function (value, element) 
     if ($("#<%= rdOtherAmt.ClientID %> input:checked")) 
         return this.optional(element) || /^((\d1,5)+\.\d2)?$|^\$?[\.]([\d][\d]?)$/.test(value);
                      
);

这将完美运行,需要两位小数。

【讨论】:

【参考方案4】:

这是我们用于正则表达式货币输入的最佳整体答案,包含我们需要的所有内容:/(?=.)^\$?(([1-9][0-9]0,2 (,[0-9]3)*)|[0-9]+)?(.[0-9]1,2)?$/

【讨论】:

【参考方案5】:

我想在 keyup 上进行测试。因此,我需要接受 999,999。在输入第一个小数位(十分位)之前。但是,我仍然想在小数点后 2 个(百分之一)位置达到最大值 - 假设在我的代码中输入 999.1 == 999.10。

var currencywithcommas = /^(\d+|\d1,3(,\d3)*)+(\.\d2)?$/;
if ($("#yourelement").val().match(currencywithcommas)) 
  // positive match code

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

原型代码:

jQuery.validator.addMethod("currencywithcommas", function (value, element) 
    var currencywithcommasReg = /^(\d+|\d1,3(,\d3)*)+(\.\d2)?$/;
    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;

而且,鲍勃是你的叔叔……

【讨论】:

是的,德鲁。它为我的实现做了。正如其他人指出的那样,这不适合与本地化相关的实现。

以上是关于jQuery US Currency 验证正则表达式也允许整数的主要内容,如果未能解决你的问题,请参考以下文章

为啥 jQuery 的电子邮件验证正则表达式如此简单?

常用的JQuery数字类型验证正则表达式整理

jquery正则表达式验证:验证纯中文

jquery.validation自定义正则表达式验证

包含的 JQuery 验证正则表达式

jQuery 正则表达式验证