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}$)?"