3

我需要使用 JavaScript 验证数字字符串,以确保该数字恰好有两位小数。

只有在以下情况下验证才会通过

  1. 该数字恰好有两位小数
  2. 小数点前至少有一位数。(可能为零)
  3. 小数点前的数字不能以一个以上的零开头。

有效号码:

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

4

7 回答 7

8

.匹配任何字符,它不会做你认为它做的事情。你必须逃避它。此外,您还有两个错误;尝试

^[0-9]+\.[0-9][0-9]$

相反,甚至更好,\d用于十进制数字:

^\d+\.\d\d$
于 2012-11-03T10:41:57.400 回答
5

这涵盖了所有要求

^(0|0?[1-9]\d*)\.\d\d$
  • 该数字恰好有两位小数
    • 由于非可选,因此很满意\.\d\d$

其他两个条件可以重述如下:

  • 小数点前的数字要么为零
  • 或一个正好有一个零的数字,然后是一个以零开头的数字

这在这两种情况下都有涉及:

  • 0
  • 0?[1-9]\d*
于 2012-11-03T11:57:13.087 回答
3

您不需要正则表达式。

JavaScript 有一个功能toFixed()可以满足您的需求。

var fixedtotwodecimals = floatvalue.toFixed(2);
于 2012-11-03T10:41:49.330 回答
1
var values='0.12';

document.write(values.match(/\d+[.]+\d+\d/));

根据需要更改值并检查它

于 2012-11-03T10:43:35.473 回答
1

我用这个

^[1-9][1-9]*[.]?[1-9]{0,2}$

  • 0 不接受

  • 123.12 接受但 123.123 不接受

  • 1 接受

  • 12213123 接受

  • sdfsf 不接受

  • 15.12 接受

  • 15@12 不接受

  • 15&12 不接受

于 2020-09-22T14:52:47.193 回答
0

这里是:

^(0[.]+\d{2})|^[1-9]\d+[.]+\d{2}$
于 2012-11-03T10:54:38.793 回答
0

试试这个代码

pattern="[0-9]*(\.?[0-9]{1,2}$)?"
  • 1 有效

  • 1.1 有效

  • 1.12 有效

  • 1.123 无效

  • 只有数字有效

    模式="[0-9]*(.?[0-9]{2}$)?"

  • 1 有效

  • 1.1 无效

  • 1.12 有效

  • 1.123 无效

  • 只有数字有效

于 2020-10-13T05:37:48.563 回答