繁体   English   中英

javascript中只能访问小数和数字的正则表达式

[英]Regular expression in javascript that access decimals and numbers only

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

  • 号码的最大长度: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})?$/"/>

但它不满足最大长度值。

请帮助解决这个问题。

通过前瞻检查长度。

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

与其他解决方案相比,这更容易扩展到问题的变体,例如“最多七位总位数,最多四位小数”。 只需替换“更改这些参数”所指向的两个字符即可。

很确定这会为你做到:

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

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

这是模式的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)
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM