javascript中的正则表达式,仅访问小数和数字

时间:2015-11-21 07:34:05

标签: javascript regex

我想制作支持以下所有数字的正则表达式,

  • 最大长度:7
  • 最大小数位数:2

示例:

  • 有效:500,1234567,350.75,7500.05,4500.3
  • 无效:100.123,12345678,45000.25

我试过

<input type='number' pattern="/^\d{1,7}(\.\d{1,2})?$/"/>

但它不满足最大长度值。

请帮助解决这个问题。

3 个答案:

答案 0 :(得分:1)

通过前瞻检查长度。

               ↓               ↓       CHANGE THESE PARAMETERS
/^(?=(.[.]?){1,7}$)\d*([.]\d{1,2})?$/
  |---------------|                    LOOK-AHEAD TO CHECK LENGTH
                   |-|                 INTEGER PORTION OF NUMBER
                      |-----------|    OPTIONAL DECIMAL PORTION OF NUMBER

这更容易扩展到问题的变化,例如&#34;最多七位总数,最多四位小数&#34;比其他解决方案。只需更换&#34;更改这些参数&#34;指示的两个字符。

答案 1 :(得分:0)

非常肯定会为你做这件事:

^(\d{1,5}\.\d{2}|\d{1,6}\.\d|\d{1,7})$

任何5.2或6.1或7位数(最大字符数)

答案 2 :(得分:0)

此处为模式jsbin

var re = /^(\d{1,7}|\d{1,6}\.\d|\d{1,5}\.\d{1,2})$/;

function validate(str) {
  return (str).match(re) !== null;
}

function assert(value, expected) {
  return value === expected;
}

console.log(
  assert(validate("1234567"), true)
);

console.log(
  assert(validate("123456.7"), true)
);

console.log(
  assert(validate("12345.67"), true)
);

console.log(
  assert(validate("1234.567"), false)
);

console.log(
  assert(validate("12345.678"), false)
);

console.log(
  assert(validate("123456.78"), false)
);

console.log(
  assert(validate("1234567.8"), false)
);

console.log(
  assert(validate("12345678"), false)
);