jQuery US货币validationregEx也允许整数

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

// 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怎么办?

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

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

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

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

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

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

我想测试一下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 }, ... 

相同的概念,但扩展到使用validationfunction。

 $(".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; } 

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