HTML5表格input模式货币格式

使用HTML5我有一个input字段,应该input一个美元金额进行validation。 目前我有以下标记:

<input type="number" pattern="(\d{3})([\.])(\d{2})"> 

这适用于大于100.00且小于1,000.00的值。 我正在试图写出这个模式(正则expression式)来接受一个小于一美元和一美元以上的金额。 可能超过100,000.00。 这可能吗?

任何帮助深表感谢! 🙂

问候,本

如果你想允许逗号分隔符将通过下面的testing用例:

 0,00 => true 0.00 => true 01,00 => true 01.00 => true 0.000 => false 0-01 => false 

然后使用这个:

 ^\d+(\.|\,)\d{2}$ 

最好的我们可以拿出来是这样的:

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

我意识到这可能看起来太多了,但就我可以testing而言,它与人眼所接受的任何有价值的货币相匹配,并将其他所有东西排除在外。

它匹配这些:

 1 => true 1.00 => true $1 => true $1000 => true 0.1 => true 1,000.00 => true $1,000,000 => true 5678 => true 

并除掉这些:

 1.001 => false 02.0 => false 22,42 => false 001 => false 192.168.1.2 => false , => false .55 => false 2000,000 => false 

怎么样 :

 ^\d+\.\d{2}$ 

这匹配一个或多个数字,一个点和点后的两个数字。

要匹配千位分隔符:

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

另一个答案是这样的

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

这将匹配一串:

  • 一个或多个小数位以外的数字(\ d +)
  • (\ d {1,3})(\,\ d {3} |)*中的任何数字的逗号,每个逗号后面必须跟3个数字,并且最多有3个数字。

每个或者可以有一个小数位,后面必须跟两个数字(。\ d {2} |)

我写这个价格模式没有零价格。

 (0\.((0[1-9]{1})|([1-9]{1}([0-9]{1})?)))|(([1-9]+[0-9]*)(\.([0-9]{1,2}))?) 

适用于:

  • 1.00
  • 1
  • 1.5
  • 0.10
  • 0.1
  • 0.01
  • 2500.00

无效的:

  • 0
  • 0.00
  • 0.0
  • 2500。
  • 2500.0000

在线查看我的代码: http : //regexr.com/3binj

我喜欢给用户一点灵活性和信任,他们会得到正确的格式,但我想强制执行只有数字和两位小数的货币

 ^[$\-\s]*[\d\,]*?([\.]\d{0,2})?\s*$ 

照顾:

 $ 1. -$ 1.00 $ -1.0 .1 .10 -$ 1,000,000.0 

当然它也会匹配:

 $$--$1,92,9,29.1 => anyway after cleanup => -192,929.10 

使用这种模式"^\d*(\.\d{2}$)?"