繁体   English   中英

货币的Javascript正则表达式

[英]Javascript regex for currency

我只想传递适当的货币金额,例如22.22、465.56、1424242.88

我一直在使用此正则表达式:

[0-9]+\.[0-9][0-9](?:[^0-9a-zA-Z\s\S\D]|$)

但它允许使用符号,例如£25.55。 如何只强制采用正确货币格式的数字?

谢谢你的帮助

听起来您只是没有在正则表达式上提供锚,而您也没有逃脱过. 例如,应该是:

var currencyNumbersOnly = /^\d+\.\d{2}$/;

分解:

  • ^字符串的开头。

  • \\d一个数字(0-9)。

  • +一个或多个先前的实体(因此\\d+表示“一个或多个数字”)。

  • \\. 文字小数点。 需要注意的是一些文化使用,而不是.

  • \\d{2}恰好是两位数。

  • $字符串结尾。

这不是很严格。 例如,它允许0000000.00 它还不允许2 (改为2.00 )。 还要注意,即使是在谈论货币数据时,我们也不总是总是下降到数百个。 例如,银行汇率可能会在小数点右边连续数个位置。 (例如,xe.com说,现在,1美元= 0.646065英镑)。

正如杰克(Jack)在对问题的评论中指出的那样,您可能希望允许使用负数,因此请加上-? (0或1 -字符)在那里之后^可适当:

var currencyNumbersOnly = /^-?\d+\.\d{2}$/;

更新 :现在,我可以看到您的完整正则表达式,您可能需要:

var currencyNumbersOnly = /^\d+\.\d{2}(?:[^0-9a-zA-Z\s\S\D]|$)/;

我不确定最后您会如何处理,特别是似乎 (除了其他事情)您可以允许一个字符,只要它不是0-9 只要它不是不是\\D 因为\\D意思是“不是0-9 ”,所以很难看出有什么能与之匹配。 (同样,其中的\\s\\S

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM