我有这个正则表达式,但现在需要允许没有小数的数字
// 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怎么办?
答案 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是你的叔叔......