问题
I have a form and I am using jQuery validation plugin to validate it. Now I am trying to validate decimal number input.
I have tried the following code, but its not working. Is the problem with the regular expression or the way of writing the custom rule is wrong in my code?
 rules: {
      paid_amount: {
              required:true,
                      rexp: ^[1-9]\d*(\.\d+)?$
      },
   }
     },
 messages: {
             paid_amount: {
                      required: "Enter Paid Amount",
              rexp:"Decimal Numbers Only"
    },  
     }
});
回答1:
You can use the number validation method found here
From the docs:
$("#myform").validate({
  rules: {
    field: {
      required: true,
      number: true
    }
  }
});
In your case:
rules: {
    paid_amount: {
        required:true,
        number: true
    }
},
messages: {
    paid_amount: {
        required: "Enter Paid Amount",
        number: "Decimal Numbers Only"
    }
}
回答2:
I'm not familiar with jquery validator plugin, sorry but your regular expression is valid.
another approach would be
var reg = "/^[1-9]\d*(\.\d+)?$/"; //reg pattern<br/>
if(reg.test("1.23"))//validate
{
 //do something <br/>
}
回答3:
jQuery validator also supports decimal validation using range method.
factor:
      {
        required: true,
        range:[0.08,20.09]  
      },
Read more here and demo here.
回答4:
Use the jQuery isNumeric function: http://api.jquery.com/jQuery.isNumeric/
回答5:
Your problem is with the method 'rexg'. You should use 'pattern'. Example:
paid_amount: {
     required:true,
     pattern: ^[1-9]\d*(\.\d+)?$
}
来源:https://stackoverflow.com/questions/10790261/validating-decimal-numbers