Javascript 带小数和千位分隔符的数字的正则表达式
我需要正则表达式使用javascript验证一个可能包含千个分隔符或小数的数字。 最大值为Javascript 带小数和千位分隔符的数字的正则表达式,javascript,regex,decimal,Javascript,Regex,Decimal,我需要正则表达式使用javascript验证一个可能包含千个分隔符或小数的数字。 最大值为999999.99 最小值0.01 其他有效值: 11111 11.1 1111.11 无效值: 1111 1111,11 ,111 111, 我找遍了,一点也不高兴 /^\d{1,3}(,\d{3})*(\.\d+)?$/ 关于最小值和最大值。。。我不会用正则表达式,但你可以在开头加上lookaheads: /^(?!0+\.00)(?=.{1,9}(\.|$))\d{1,3}(,\d{3})*(\.\
999999.99
最小值0.01
其他有效值:
11111
11.1
1111.11
无效值:
1111
1111,11
,111
111,
我找遍了,一点也不高兴
/^\d{1,3}(,\d{3})*(\.\d+)?$/
关于最小值和最大值。。。我不会用正则表达式,但你可以在开头加上lookaheads:
/^(?!0+\.00)(?=.{1,9}(\.|$))\d{1,3}(,\d{3})*(\.\d+)?$/
注意:这允许0999.00
,因此您可能希望将其更改为:
/^(?!0+\.00)(?=.{1,9}(\.|$))(?!0(?!\.))\d{1,3}(,\d{3})*(\.\d+)?$/
这将不允许前导0
编辑:测试: 它在一些方面起了作用,但我仍然在学习正则表达式
逻辑应该是1-3位数字0-1次,1个逗号后跟3位数字任意次数,以及一个单数。后跟任意数量的数字0-1次我在下面的regrex中用于以下检索-
^(?!0|\.00)[0-9]+(,\d{3})*(.[0-9]{0,2})$
在最近的一个项目中,我们需要修改这个版本以满足国际要求。 这就是我们使用的:
^-?(\d{1,3}(?\。\124;\,\ 124;)(\ d{3}\k)*(\d{3}(?!\k)[\.\124;\,]))?\ d*$
创建一个命名组
(?\.\124\,|)
允许我们稍后使用否定的前瞻(?!\k)[\.\124\,])
来确保千位分隔符和小数点实际上是不同的。首先,我想指出,如果您拥有数据来自的表单,限制输入的最佳方法是使用适当的表单元素(aka,number字段)
Tezra的公式对“1”或“1.0”无效。出于我的目的,我允许前导零和尾随零,以及前导+或-符号,如下所示:
^[-+]?((\d{1,3}(,\d{3})*)|(\d*))(\.|\.\d*)?$
谢谢你的快速回复,虽然没有乐趣。我这样称呼它,但它失败了:var re=newregexp(“/(!0+\.00)(?!{10,}\)(?!0,\d)\d{1,3}(,\d{3})*\.\d+/”;如果(!min.match(re)){alert('No match');}@Swifty你能给我一个失败的例子吗?我正在用这个页面来测试它:如果我输入'1',它失败。@Swifty my bad,我认为小数是必需的。我正在更改它。@RyanDaulton在问题中指定了一个最大值
9999999.99
,该值低于10029589.84
。那里也没有乐趣。你能给出失败案例吗?编辑后,应该是a+,而不是?对于第一个子表达式。以某种方式返回所有有效内容?@Swifty*和?等于可选,并且\d{1,3}+至少等于1位数字。如果不在“^”和“$”中括起,则它相当于“至少包含1位”
<input type="number" name="size" min="0.01" max="9,999,999.99" step="0.01">
^([1-9]\d{0,2}(,?\d{3})*|0)(\.\d+[1-9])?$
^[-+]?((\d{1,3}(,\d{3})*)|(\d*))(\.|\.\d*)?$