用小数点和千位分隔符的正则表达式
我需要使用正则表达式来验证可能包含千位分隔符或使用javascript的小数的数字。 最大值为9,999,999.99
最小值0.01
其他有效值: 11,111
11.1
1,111.11
无效值: 1111
1111,11
,111
111,
我已经无所顾忌地搜遍了。
/^d{1,3}(,d{3})*(.d+)?$/
关于最小值和最大值...呃,我不会用正则表达式来做,但是你可以在开头添加lookahead:
/^(?!0+.00)(?=.{1,9}(.|$))d{1,3}(,d{3})*(.d+)?$/
注意:这允许0,999.00
,所以您可能想要将其更改为:
/^(?!0+.00)(?=.{1,9}(.|$))(?!0(?!.))d{1,3}(,d{3})*(.d+)?$/
这将不允许领先0。
编辑:
测试:http://jsfiddle.net/pKsYq/2/
((d){1,3})+([,][d]{3})*([.](d)*)?
它只适用于一些,但我仍然在学习正则表达式。
逻辑应该是1-3位数字0-1次,1个逗号后跟3位数字的任意次数,以及一个单数。 随后是任意数量的数字0-1次
我已经在下面的regrex中使用了以下限制 -
^(?!0|.00)[0-9]+(,d{3})*(.[0-9]{0,2})$
上一篇: Regex for number with decimals and thousand separator
下一篇: Why am I seeing inconsistent JavaScript logic behavior looping with an alert() vs. without it?