货币验证

新手上路,请多包涵

请帮助我为货币/货币字段编写 _JavaScript 验证_。

所以请提供 _任何正则表达式_,如果你有 :)

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

仅小数作为特殊字符与数字一起用于验证

原文由 dev646 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 437
2 个回答

您可以使用正则表达式:

 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) 舍入到小数点后两位。 parseFloat 对输入的严格程度要低得多,并且会从字符串中提取它可以找到的第一个数字,只要该字符串以数字开头,例如。 parseFloat("123abc") 会产生 123

原文由 Andy E 发布,翻译遵循 CC BY-SA 2.5 许可协议

我根据已接受的答案构建了我的答案。

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
    • 1,000
    • 3967.
    • 23
    • 1.2
    • 999,999.99

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

更新

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

原文由 Sababado 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题