在javascript中验证货币

时间:2012-02-13 19:03:11

标签: javascript regex

我正在尝试使用以下函数验证货币:

function checkwages(input){
    var validformat=/^\d{0,5}(\.\d{1,2})?$/;
    if ( validformat.test(input)) {
        // alert("$:"+ input + " test");
        return true;
    }
    return false;
}

目标是确保用户输入数字或小数格式。它不能是0或负数。但是,当输入字段为空时,此失败,因为0数字在此格式中有效。但是,如果我将其更改为/^\d{1,5}(\.\d{1,2})?$/,则.21将变为无效并强制用户输入类似0.21的内容。如何更改正则表达式,以便即使.21被认为是有效数字?

由于

2 个答案:

答案 0 :(得分:1)

/^(?=.*[1-9])\d{0,5}(\.\d{1,2})?$/

开头的位在字符串中的任何位置查找非零,但不捕获它。

答案 1 :(得分:-2)

无法用RegEx证明输入大于0.但这是您的条件之一(“它不能为0”)。因此,即使使用第二个RegEx,用户也可以输入0或0.0,这将被评估为true。

我的建议是你使用你的第一个RegEx并将它与这个简单的比较结合起来:

if ( validformat.test(input) && input.length > 0 && input > 0) 

然后验证应满足您的所有要求,并且非常简单(动态输入ftw)。