[英]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.