使用javascript或jquery进行价格字段验证?

时间:2014-02-01 06:04:38

标签: javascript jquery

我的表单中有一个价格字段我应该只允许小数或浮点数,而不是我的价格字段中的字符和任何其他特殊和空格。

我怎么能得到它?

这是我的代码:

    $("#foo").blur(function() {
    var price = $("#foo").value;
    var validatePrice = function(price) {
   return /^(\d*([.,](?=\d{3}))?\d+)+((?!\2)[.,]\d\d)?$/.test(price);
}
    alert(validatePrice(price)); // False
});

Fiddle

3 个答案:

答案 0 :(得分:6)

首先,这是更正后的代码:

$("#foo").blur(function() {
    var price = $("#foo").val();
    var validatePrice = function(price) {
      return /^(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(price);
    }
    alert(validatePrice(price)); // False
});

您需要分别测试空值(未定义)。此外,如果要允许负值,请使用:

/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(price);

这个正则表达式取自JörnZaefferer的JQuery Validate插件。我建议您考虑使用该插件,因为它包含许多其他功能。

答案 1 :(得分:3)

在HTML5中,如果浏览器支持它,它本身就是supports checking validity

$("#foo").blur(function(){
    alert(this.checkValidity());
});

演示:http://jsfiddle.net/DerekL/6djkS/


如果浏览器不支持,你可以随时回到丑陋的旧版Regex。

基于JSON中使用的数字定义:

http://www.json.org/number.gif

(删除了负面的科学记数部分。)

var regex = /^\d*(.\d{2})?$/;
regex.test(price);   //Boolean

答案 2 :(得分:0)

对于https://stackoverflow.com/a/21494842/1885344,正确的正则表达式是

var regex = /^\d*(\.\d{2})?$/;
regex.test(price);   //Boolean

就像现在一样,它会允许所有字符作为小数分隔符,因为它应该只是点(。)字符。