javascript - 允许使用 JavaScript 正则表达式将金额输入到输入中

标签 javascript regex decimal currency

我正在使用普通的 JavaScript,需要一些关于我的正则表达式的帮助。必须允许使用以下格式的货币,并且仅允许使用这些格式(对于允许的美元金额,0 的数量(十、百、千等)没有限制):

  • 25,000 美元
  • 25000 美元
  • 25,000
  • 25000
  • 25000.01
  • 25,000.99
  • 2000.99
  • 50.00
  • 50
  • 1.95
  • 1 .99
  • 0.25
  • 0.25 美元
  • 0.2
  • 2.3
  • 2000.5
  • .75

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

目前,它不允许输入 0.99 之类的金额。

最佳答案

试试这个

^\$?(?:\d+|\d{1,3}(?:,\d{1,3})*)(?:\.\d{2})?$

查看here on Regexr

唯一不匹配的是你的倒数第三个例子,它在点之前有一个空格。这有效吗?

编辑:

我的第一个解决方案有一个限制,它会接受以 0 开头的数字,比如 001。这个解决方案使用负前瞻来避免这种情况:

^\$?(?!0\d)(?:\d+|\d{1,3}(?:,\d{1,3})*)(?:\.\d{2})?$

查看here on Regexr

没有前瞻的解决方案

^\$?(?:0|[1-9]\d*|[1-9]\d{0,2}(?:,\d{1,3})*)(?:\.\d{2})?$

查看Regexr

关于javascript - 允许使用 JavaScript 正则表达式将金额输入到输入中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9415780/

相关文章:

javascript - 如何用纯 JavaScript 编写 $ ("#content").height() ?

java - 在java中按字符拆分字符串

regex - 如何订购正则表达式替代品以获得最长匹配?

c# - 使用正则表达式替换删除行

python - 不再是漂浮物

c# - 如何在 C# 中以 0 到 1 十进制格式转换 DateTime.Now

javascript - Elasticsearch : How can i map json data having dynamic number of fields

javascript - 如何使用 jQuery 一次性追加某项内容?

二进制到标准数字?

javascript - 单击时选择文本字段中的文本?