Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带小数和千位分隔符的数字的正则表达式_Javascript_Regex_Decimal - Fatal编程技术网

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})*(\.\

我需要正则表达式使用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})*(\.\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})$
  • 不允许0和0.00
  • 三位数字后的“,”(千位分隔符)
  • “.”(小数点后两位)

  • 在最近的一个项目中,我们需要修改这个版本以满足国际要求。 这就是我们使用的:
    ^-?(\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*)?$