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 验证正则表达式也允许整数的主要内容,如果未能解决你的问题,请参考以下文章