代码之家  ›  专栏  ›  技术社区  ›  Ali

验证javascript十进制数

  •  6
  • Ali  · 技术社区  · 15 年前

    我正在使用以下regexp验证我的javascript文件中的数字:

    var valid = (val.match(/^\d+$/));
    

    它适用于100、200等整数,但对于1.44、4.11等整数,它返回false。我怎样才能更改它,使带小数的数字也被接受?

    5 回复  |  直到 11 年前
        1
  •  27
  •   Senseful    15 年前
    var valid = (val.match(/^\d+(?:\.\d+)?$/));
    

    比赛:

     1  : yes
     1.2: yes
    -1.2: no
    +1.2: no
      .2: no
     1. : no
    

    var valid = (val.match(/^-?\d+(?:\.\d+)?$/));
    

    比赛:

     1  : yes
     1.2: yes
    -1.2: yes
    +1.2: no
      .2: no
     1. : no
    

     var valid = (val.match(/^[-+]?\d+(?:\.\d+)?$/));
    

    比赛:

     1  : yes
     1.2: yes
    -1.2: yes
    +1.2: yes
      .2: no
     1. : no
    

    var valid = (val.match(/^[-+]?(?:\d*\.?\d+$/));
    

    比赛:

     1  : yes
     1.2: yes
    -1.2: yes
    +1.2: yes
      .2: yes
     1. : no
    

    var valid = (val.match(/^[-+]?(?:\d+\.?\d*|\.\d+)$/));
    

    比赛:

     1  : yes
     1.2: yes
    -1.2: yes
    +1.2: yes
      .2: yes
     1. : yes
    
        2
  •  3
  •   hunter    15 年前

    试试这个:

    ^[-+]?\d+(\.\d+)?$
    
        3
  •  3
  •   seanmonstar    15 年前

    对我来说,这似乎是一个更好的解决方案。

    > isNaN('1')
    false
    > isNaN('1a')
    true
    > isNaN('1.')
    false
    > isNaN('1.00')
    false
    > isNaN('1.03')
    false
    > isNaN('1.03a')
    true
    > isNaN('1.03.0')
    true
    
        4
  •  0
  •   kennebec    15 年前

    如果您想要接受小数(包括<1)和整数,并且带有可选的+或-符号,那么可以使用valid=number(val)。

    或ReXEP:

    valid=/^[+\-]?(\.\d+|\d+(\.\d+)?)$/.test(val);
    
        5
  •  0
  •   Mayank    11 年前

    !isnan(文本)&parsefloat(文本)==文本