【问题标题】:Validating javascript decimal numbers验证javascript十进制数字
【发布时间】:2011-01-30 12:35:58
【问题描述】:

我正在使用以下正则表达式来验证我的 javascript 文件中的数字:

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

它适用于整数,如 100、200 等,但对于 1.44、4.11 等,它返回 false。如何更改它以便也接受带小数的数字?

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:
    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】:

      试试这个:

      ^[-+]?\d+(\.\d+)?$
      

      【讨论】:

      • "4."在技​​术上是一个有效的十进制数,但这个正则表达式不匹配。您应该将组中的\d+ 数字设为可选。
      【解决方案3】:

      如果你想接受小数(包括

      或者一个正则表达式:

      valid=/^[+\-]?(\.\d+|\d+(\.\d+)?)$/.test(val);
      

      【讨论】:

        【解决方案4】:

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

        > 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
        

        【讨论】:

          【解决方案5】:

          !isNaN(text) && parseFloat(text) == text

          【讨论】:

            猜你喜欢
            • 2010-09-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-14
            • 2014-05-22
            相关资源
            最近更新 更多