javascript中仅访问小数和数字的正则表达式
我想做一个正则表达式,它支持下面所有的数字javascript中仅访问小数和数字的正则表达式,javascript,regex,Javascript,Regex,我想做一个正则表达式,它支持下面所有的数字 数字的最大长度:7 小数点后的最大长度:2 例如: 有效:5001234567350.757500.054500.3 无效:100.123、12345678、45000.25 我试过了 但它不满足“最大长度”值 请在此问题上提供帮助。我很确定这将为您提供帮助: ^(\d{1,5}\.\d{2}|\d{1,6}\.\d|\d{1,7})$ 任何5.2或6.1或7位数字(最大字符数)这是一个用于模式的数字 var re = /^(\d{1,7}
- 数字的最大长度:7
- 小数点后的最大长度:2
- 有效:5001234567350.757500.054500.3
- 无效:100.123、12345678、45000.25
但它不满足“最大长度”值
请在此问题上提供帮助。我很确定这将为您提供帮助:
^(\d{1,5}\.\d{2}|\d{1,6}\.\d|\d{1,7})$
任何5.2或6.1或7位数字(最大字符数)这是一个用于模式的数字
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)
);
通过前瞻检查长度
↓ ↓ 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,7}\d{1,5}\.\d{1,4}\.\d{1,2}$/
7是否包含2个12位,还是7+2?“45000.25”不应在有效示例中?hi webduvet,7包含小数点Shi Jaromanda,您能告诉我最大长度10和最大小数点6的情况吗。THX您是否可以扩展此方法以处理最大小数位数为10的情况(最大总长度更大,如15)?不,我的re
不能像这样扩展。我不熟悉你的“前瞻性”方法。但我想成为。我尝试了我的模式,但第二次和第三次测试都失败了。我不知道如何修改表达式来修复它。对不起,我误解了OPs的注释7包含小数点,意思是包含小数点。我已经更新了我的答案。酷,你更新的表情满足了我的要求。你的表达式具有可伸缩性的优点。mattgreen的表达式也适用于。但它是可伸缩的吗?它接受5个整数[ex:12345.78]。在这种情况下,长度变成了8。我对问题陈述的理解是,7的最大长度适用于数字,而不是小数点本身。所以在这个解释中,12345.78应该被接受,因为总位数是7。很抱歉,我提到了“45000.25”,这是“无效的”。最大数字7表示数字的总长度,包括“.”嗨,torazburo,我斯莱格尔蒂修改了你们的答案,效果很好/^(?=(.?){1,7}$)\d*([.]\d{1,2})$/