【问题标题】:regexp to check if input is only whole numbers (int) , and to check if another is only numbers with 2 decimal places正则表达式检查输入是否只有整数 (int) ,并检查另一个是否只有小数点后 2 位的数字
【发布时间】:2011-11-16 07:39:46
【问题描述】:

我想知道正则表达式的样子:

  1. 只有整数
  2. 仅限小数点后两位以下的数字(23、23.3、23.43)

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    只有整数:

    /^\d+$/
             # explanation
    \d       match a digit
     +       one or more times
    

    最多有 2 位小数的数字:

    /^\d+(?:\.\d{1,2})?$/
    
             # explanation
     \d       match a digit...
     +        one or more times
      (        begin group...
       ?:      but do not capture anything
       \.      match literal dot
       \d      match a digit...
       {1,2}   one or two times
      )        end group
     ?        make the entire group optional
    

    注意事项:

    • 斜线表示模式的开始和结束
    • ^$ 是字符串锚的开始和结束。如果没有这些,它将在字符串中的任何位置查找匹配项。所以/\d+/ 匹配'398501',但它也匹配'abc123'。锚点确保 整个 字符串与给定的模式匹配。
    • 如果要允许负数,请在第一个 \d 之前添加 -?。同样,? 表示“零次或一次”。

    使用示例:

    var rx = new RegExp(/^\d+(?:\.\d{1,2})?$/);
    console.log(rx.test('abc'));      // false
    console.log(rx.test('309'));      // true
    console.log(rx.test('30.9'));     // true
    console.log(rx.test('30.85'));    // true
    console.log(rx.test('30.8573'));  // false
    

    【讨论】:

    • 我见过的最好的解释。
    【解决方案2】:

    我。 [1-9][0-9]* 如果数字应该大于零(任何以非零数字开头的数字系列)。如果它应该是零或更多:(0|[1-9][0-9]*)(零或非零数)。如果它可以是负数:(0|-?[1-9][0-9]*)(零或可以在其前有一个减号的非零数字。)

    二。像 I. 这样的正则表达式,后跟:(\.[0-9]{1,2})?,这意味着,可选的点后跟一位或两位数字。

    【讨论】:

    • 最重要的是弄清楚为什么这些正则表达式有效!正则表达式使用与程序流不同的逻辑。
    【解决方案3】:

    仅整数

    /\d+/
    

    一位或两位小数:

    /\d(\.\d{1,2})?/
    

    【讨论】:

    • 你的第二个不匹配整数
    • 是的——本来以为是这个意思,没仔细看问题。固定
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2013-03-26
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多