我想制作支持以下所有数字的正则表达式,
示例:
我试过
<input type='number' pattern="/^\d{1,7}(\.\d{1,2})?$/"/>
但它不满足最大长度值。
请帮助解决这个问题。
答案 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)
);