正则表达式强制小数点后2位数

时间:2012-11-03 10:39:26

标签: javascript regex

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

只有在

时才会通过验证
  1. 该数字恰好有两位小数
  2. 小数点前至少有一位数字。 (可能是零)
  3. 小数点前的数字不能以多于零开始。
  4. 有效数字:

    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

7 个答案:

答案 0 :(得分:5)

This covers all requirements

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

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

  • 小数点前的数字为零
  • 或只有一个零的数字,那么的数字从零开始

这包括以下两种情况:

  • 0
  • 0?[1-9]\d*

答案 1 :(得分:4)

.匹配任何角色,它不会按照您的想法执行。你必须逃脱它。此外,还有两个错误;尝试

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

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

^\d+\.\d\d$

答案 2 :(得分:3)

您不需要正则表达式。

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

var fixedtotwodecimals = floatvalue.toFixed(2);

答案 3 :(得分:0)

var values='0.12';

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

根据需要更改值并进行检查

答案 4 :(得分:0)

这是:

^(0[.]+\d{2})|^[1-9]\d+[.]+\d{2}$

答案 5 :(得分:0)

我用了这个

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

  • 0不接受

  • 123.12接受但123.123不接受

  • 1接受

  • 12213123接受

  • sdfsf不接受

  • 15.12接受

  • 15 @ 12不接受

  • 15&12不接受

答案 6 :(得分:0)

尝试此代码

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无效

  • 仅有效数字