允许使用JavaScript Regex将金额输入到输入中

Allowing money amounts to be entered into an input with a JavaScript Regex

本文关键字:输入 金额 许使用 JavaScript Regex      更新时间:2023-09-26

我使用的是普通的JavaScript,需要一些regex的帮助。必须允许以下格式的货币,并且仅允许这些格式的货币(允许的美元金额不限制0(十、百、千等)的数量):

  • 25000美元
  • 25000美元
  • 25000
  • 25000
  • 25000.01
  • 2500099
  • 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})?$

在Regexr 上查看

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

编辑:

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

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

在Regexr 上查看

无前瞻性的解决方案

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

在Regexr 上查看

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

虽然我不会使用如此严格的输入限制。