请帮助我为货币/货币字段编写 _JavaScript 验证_。
所以请提供 _任何正则表达式_,如果你有 :)
此外,对于我所在的地区,字段中 不需要任何货币符号,如“$”。
仅小数作为特殊字符与数字一起用于验证。
原文由 dev646 发布,翻译遵循 CC BY-SA 4.0 许可协议
我根据已接受的答案构建了我的答案。
var regex = /^[1-9]\d*(((,\d{3}){1})?(\.\d{0,2})?)$/;
^[1-9]
数字必须以1-9开头
\d*
该号码可以有任意数量的任意数字
(...)$
从最后看下一组 (...)$
(...)?(...)?
可选地查找两组。第一个用于逗号,第二个用于小数。
(,\d{3}){1}
寻找一次出现的逗号后跟恰好三位数字
\.\d{0,2}
查找小数点后跟零、一位或两位数字。
此正则表达式适用于以下规则:
有效值为数字 0-9、逗号和小数点。
如果客户输入多于一位小数点或多于一个逗号,则该值无效且不被接受。
无效输入值示例
有效输入值的示例
一个例子可以在这里看到:http: //jsfiddle.net/rat141312/Jpxu6/1/
更新
通过将正则表达式中的--- [1-9]
更改为 [0-9]
任何小于 1
的数字也可以被验证。示例:0.42、007
原文由 Sababado 发布,翻译遵循 CC BY-SA 3.0 许可协议
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
您可以使用正则表达式:
如果您不希望对小数位如此严格,您可能会发现使用一元 (
+
) 运算符转换为数字以检查其有效性更容易:如果数字字符串无效,它将返回
NaN
(不是数字),您可以轻松测试:当然,它会允许用户添加更多小数位,但您可以使用
number.toFixed(2)
舍入到小数点后两位。parseFloat
对输入的严格程度要低得多,并且会从字符串中提取它可以找到的第一个数字,只要该字符串以数字开头,例如。parseFloat("123abc")
会产生123
。