货币验证

时间:2010-02-09 07:06:59

标签: javascript validation expression currency

请帮助我为货币/货币字段编写 JavaScript验证

如果您有:)

,请提供任何正则表达式

此外,对于我的地区,字段中不需要任何货币符号,如“$”。

只有小数才能包含在验证中作为特殊字符。以及数字。

5 个答案:

答案 0 :(得分:36)

你可以使用正则表达式:

var regex  = /^\d+(?:\.\d{0,2})$/;
var numStr = "123.20";
if (regex.test(numStr))
    alert("Number is valid");

如果您不希望对小数位数一样严格,您可能会发现使用一元(+)运算符更容易转换为数字以检查它的有效性:

var numStr = "123.20";
var numNum = +numStr; // gives 123.20

如果数字字符串无效,它将返回NaN(非数字),您可以轻松测试:

var numStr = "ab123c";
var numNum = +numStr;
if (isNaN(numNum))
    alert("numNum is not a number");

当然,它会允许用户添加更多的小数位,但是你可以使用number.toFixed(2)来减去任何额外的小数位数到2位小数。 parseFloat对输入的严格程度要小得多,并且只要该字符串以数字开头,就会从字符串中找到它能找到的第一个数字,例如。 parseFloat("123abc")会产生123

答案 1 :(得分:27)

我根据接受的答案建立了答案。

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

^[1-9]号码必须以1-9开头 \d*该号码可以包含任意数量的任何数字 (...)$从最后(...)$开始查看下一组 (...)?(...)?可选择查找两个组。第一个是逗号,第二个是小数 (,\d{3}){1}查找一个逗号的出现,后跟正好三位数 \.\d{0,2}查找小数后跟零,一位或两位数。

这个正则表达式遵循这些规则:

  • 有效值为数字0-9,逗号和小数点。
  • 如果客户输入多个小数点或多个逗号,则该值无效且不会被接受。

  • 无效输入值的示例

    • 1.2.3
    • 1,2,4
  • 有效输入值的示例
    • 1.23
    • 1000
    • 3967
    • 23
    • 1.2
    • 999,999.99

这里可以看到一个例子: http://jsfiddle.net/rat141312/Jpxu6/1/

<强>更新

通过将正则表达式中的[1-9]更改为[0-9],也可以验证任何小于1的数字。示例:0.42,007

答案 2 :(得分:1)

/[1-9]\d*(?:\.\d{0,2})?/

[1-9] - must start with 1 to 9
\d* - any number of other digits
(?: )? - non capturing optional group
\. - a decimal point
\d{0,2} - 0 to 2 digits

这对你有用吗? 或者parseFloat

var float = parseFloat( input );

答案 3 :(得分:0)

对我来说,它在印度卢比的工作正常工作

var regex = /^[1-9]{0,2}(,{0,1})(\d{2},)*(\d{3})*(?:\.\d{0,2})$/;
var a = '1,111.11';
regex.test(a); 

答案 4 :(得分:0)

 let amount = document.querySelector('#amount'), preAmount = amount.value;
        amount.addEventListener('input', function(){
            if(isNaN(Number(amount.value))){
                amount.value = preAmount;
                return;
            }

            let numberAfterDecimal = amount.value.split(".")[1];
            if(numberAfterDecimal && numberAfterDecimal.length > 3){
                amount.value = Number(amount.value).toFixed(3);;
            }
            preAmount = amount.value;
        })
<input type="text" id="amount">