接受十进制值高达99.99

时间:2014-12-01 09:29:05

标签: javascript regex floating-point decimal

创建了一个演示版DEMO,它正如我所期望的那样工作,但我无法在24.99之后添加任何更多值,但我需要的价值可以高达99.99 < / p>

尝试修改演示regex,但它没有按预期工作。

这是Regex

^(0+)?(24(\.00?)?|(\.00?)?|\.[0-9]+|0?[0-9](\.[0-9]{0,2})?|(0+)?[0-2][0-3](\.[0-9][0-9]?)?)$

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:2)

^(0+)?(99(\.99?)?|(\.99?)?|\.[0-9]+|0?[0-9](\.[0-9]{0,2})?|(0+)?[0-9][0-9](\.[0-9][0-9]?)?)$

试试这个。看看演示。

http://regex101.com/r/oK7eW9/11

答案 1 :(得分:1)

这会将0.00 - 99.99与任意数量的小数位相匹配,加上.4343.等边缘情况:

^0*((((9[0-8]?)|([0-8][0-9]?))?(\.[0-9]*)?)|(99(\.(([0-8][0-9]*)|(9(90*|([0-8][0-9]*))))?)?))$

See Demo

请注意,它也会匹配一个空字符串,因此您应首先检查它。

虽然根据您对vks答案的评论,将值转换为浮点值然后检查它是否为范围更快更安全:

function isValidInput(value) {
    var val = parseFloat(value);
    return !isNaN(val) && val >= 0 && val <= 99.99;
}

Demo Fiddle