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

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

我需要用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
    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*
      • 我用了这个

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

        • 0不接受

        • 123.12接受但123.123不接受

        • 1接受

        • 12213123接受

        • sdfsf不接受

        • 15.12接受

        • 15@12不接受

        • 15和12不接受

        试试这个代码

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

        • 只有数字有效


        我相信OP希望验证用户输入(即布尔值),如果无效则不更正/修复。是的。。。所以,比较原始值和固定值。您仍然不需要正则表达式。您好H2C03,您的表达式接受的是.12、.34等,不应传递。@manassah,所以您希望小数点前至少有一个数字。给你。一个包含点的字符类匹配一个文字点,而不是任何字符。真正的问题是,OP没有强制数字紧跟在开始之后,即no
        ^
        ,他也不允许小数点前有多个数字<代码>[.]非常好。@Phantom你说得对,不过我只是猜测了点的使用位置,因为OP没有提供他尝试过的代码。另外,我的正则表达式解决了您列出的两个问题(我也注意到了)。但是,如果你认为这是一个糟糕的答案,请随意投票否决。他提供了正则表达式:
        [0-9][.][0-9][0-9]$
        ;)此外,您可以使用
        \d
        而不是
        [0-9]
        。这是错误的,例如,它匹配
        0.110.11
        。如果缺少括号,则
        |
        后面的
        ^
        是错误的
        [.]+
        不应包含
        +