首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >货币验证

货币验证
EN

Stack Overflow用户
提问于 2010-02-09 07:06:58
回答 6查看 84.5K关注 0票数 34

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

因此,如果您有:),请提供任何正则表达式

此外,对于我所在的地区,在字段中不需要任何像'$‘这样的货币符号

只包含小数作为特殊字符,以及数字进行验证。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-02-09 07:33:35

您可以使用regexp:

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

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

代码语言:javascript
复制
var numStr = "123.20";
var numNum = +numStr; // gives 123.20

如果数字字符串无效,它将返回NaN (而不是数字),您可以很容易地测试它:

代码语言:javascript
复制
var numStr = "ab123c";
var numNum = +numStr;
if (isNaN(numNum))
    alert("numNum is not a number");

当然,它将允许用户添加更多的小数位,但是您可以使用number.toFixed(2)将任何额外的小数位舍入到小数点后的2位。parseFloat对输入的要求要低得多,只要该字符串以数字开头,它就会从字符串中提取出第一个数字。parseFloat("123abc")会产生123

票数 47
EN

Stack Overflow用户

发布于 2012-08-02 15:21:35

我根据公认的答案建立了我的答案。

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

^[1-9]这个数字必须以1-9开头

\d*这个数字可以有任意数字的任意数字

(...)$查看(...)$末尾的下一组

(...)?(...)?可选地查找两组。第一个是逗号,第二个是小数点。

(,\d{3}){1}查找一个逗号后面紧跟三个数字的出现

\.\d{0,2}查找一个小数,后面跟着零、一或两位数。

这个正则表达式是根据以下规则工作的:

  • 有效值是0-9,逗号和小数点.
  • 如果客户输入多个小数点或多个逗号,则该值无效,不会被接受。
  • 无效输入值示例
代码语言:javascript
复制
- 1.2.3
- 1,2,4

  • 有效输入值的示例
    • 1.23
    • 1000
    • 3967。
    • 23
    • 1.2

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

更新

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

票数 36
EN

Stack Overflow用户

发布于 2010-02-09 07:18:01

代码语言:javascript
复制
/[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

代码语言:javascript
复制
var float = parseFloat( input );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2227370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档