我只想传递适当的货币金额,例如 22.22、465.56、1424242.88
我一直在使用这个正则表达式:
[0-9]+\.[0-9][0-9](?:[^0-9a-zA-Z\s\S\D]|$)
但它允许诸如 £25.55 之类的符号。如何强制只使用正确货币格式的数字?
感谢您的帮助
最佳答案
听起来您只是没有在正则表达式上提供 anchor ,并且您还没有转义 .
。例如。应该是:
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]|$)/;
我不确定你最后要做什么,特别是因为它似乎说(除其他外)你允许单个字符,只要它不是' t 0-9
和,只要它不是 \D
。由于 \D
的意思是“不是 0-9
”,所以很难看出有什么东西可以匹配它。 (同样,其中的 \s
和 \S
。)
关于Javascript 货币正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14933561/