Javascript 货币正则表达式

标签 javascript regex

我只想传递适当的货币金额,例如 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/

相关文章:

javascript - 正则表达式 javascript 转义一些字符

javascript - 如何在不删除其他类的情况下添加类?

javascript - JQuery AJAX async false 在 Chrome 上不起作用

javascript - 您可以使用 ExternalInterface.available 来检查是否启用了 JavaScript 吗?

javascript - 有人可以帮我用正则表达式提取文本吗?

javascript - 未捕获的语法错误 : Unexpected token & : jquery django context dict error

regex - Linux - 根据带有标题和尾部的关键位置对文件进行排序

javascript - 删除类属性末尾的空格

java - 正则表达式检查字符串格式?

c++ - Makefile 中扩展正则表达式列表的分隔符