正则表达式检查输入是否只是整数(进),并检查另一个是否只有2位小数的数字

时间:2011-11-15 23:15:26

标签: javascript regex

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

  1. 只有整数
  2. 只有少于或等于两位小数的数字(23,23.3,23.43)

3 个答案:

答案 0 :(得分:39)

只有整数:

/^\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

答案 1 :(得分:5)

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

II。像我这样的正则表达式后跟:(\.[0-9]{1,2})?表示,可选择一个点后跟一个或两个数字。

答案 2 :(得分:2)

仅限整数

/\d+/

一位或两位小数:

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