Javascript 强制小数点后2位的正则表达式
我需要用JavaScript验证数字字符串,以确保数字正好有两位小数 只有在以下情况下,验证才会通过Javascript 强制小数点后2位的正则表达式,javascript,regex,Javascript,Regex,我需要用JavaScript验证数字字符串,以确保数字正好有两位小数 只有在以下情况下,验证才会通过 这个数字正好有两位小数 小数点前至少有一位数字。(可能是零) 小数点前的数字不能以一个以上的零开始 有效数字: 0.01 0.12 111.23 1234.56 012345.67 123.00 0.00 .12 1.1 0.0 00.00 1234. 1234.567 1234 00123.45 abcd.12 12a4.56 1234.5A 无效号码: 0.01 0.12 111.23
0.01
0.12
111.23
1234.56
012345.67
123.00
0.00
.12
1.1
0.0
00.00
1234.
1234.567
1234
00123.45
abcd.12
12a4.56
1234.5A
无效号码:
0.01
0.12
111.23
1234.56
012345.67
123.00
0.00
.12
1.1
0.0
00.00
1234.
1234.567
1234
00123.45
abcd.12
12a4.56
1234.5A
我尝试过正则表达式
[0-9][\.][0-9][0-9]$
,但它允许小数点前的字母,如12a4.56
,您不需要正则表达式
JavaScript有一个函数,可以做您需要的事情
var fixedtotwodecimals = floatvalue.toFixed(2);
匹配任何字符,它不会执行您认为它会执行的操作。你必须逃避它。另外,您还有两个错误;试一试
^[0-9]+\.[0-9][0-9]$
相反,或者更好的做法是,对十进制数字使用\d
:
^\d+\.\d\d$
根据需要更改值并选中它在这里:
^(0[.]+\d{2})|^[1-9]\d+[.]+\d{2}$
:
- 这个数字正好有两位小数
- 由于非可选的
\。\d\d$
- 由于非可选的
- 小数点前的数字可以是零
- 或者一个正好有一个零的数字,然后是一个不以零开始的数字
0
0?[1-9]\d*
- 0不接受
- 123.12接受但123.123不接受
- 1接受
- 12213123接受
- sdfsf不接受
- 15.12接受
- 15@12不接受
- 15和12不接受
- 我用了这个
^[1-9][1-9]*[.]?[1-9]{0,2}$
pattern="[0-9]*(\.?[0-9]{1,2}$)?"
- 1有效
- 1.1有效
- 1.12有效期
- 1.123无效
- 只有数字有效 pattern=“[0-9]*(.?[0-9]{2}$)”
- 1有效
- 1.1无效
- 1.12有效期
- 1.123无效
- 只有数字有效
^
,他也不允许小数点前有多个数字<代码>[.]非常好。@Phantom你说得对,不过我只是猜测了点的使用位置,因为OP没有提供他尝试过的代码。另外,我的正则表达式解决了您列出的两个问题(我也注意到了)。但是,如果你认为这是一个糟糕的答案,请随意投票否决。他提供了正则表达式:[0-9][.][0-9][0-9]$
;)此外,您可以使用\d
而不是[0-9]
。这是错误的,例如,它匹配0.110.11
。如果缺少括号,则|
后面的^
是错误的[.]+
不应包含+
。