RegEX JS模式:0.000 - 1.600

时间:2016-04-27 17:09:53

标签: javascript regex

我需要一个限制在0.000 - 1.600

的RegEx模式

这是我到目前为止所得到的:

^(?:0(?:\.0)?|0?\.[0-9]{1,3}|1(?:\.0{1,3})?|1?\.[0-6]{1,3})$

Regular expression visualization

Debuggex Demo

问题:

此模式还允许值高达1.666
但它应该只允许值 1.600。

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:3)

This正则表达式匹配从0.0001.600最多四位数的所有浮点数。它还匹配01

^(?:1(?:\.(?:[0-5]\d{0,2}|60{0,2})|)|0(?:\.\d{1,3})?)$

Regular expression visualization

(除此之外,为什么不使用数字?)

答案 1 :(得分:0)

更改上次更改

1?\.[0-6]{1,3} 

变为

1?\.[0-5]\d{0,2}|1?\.60?0?

答案 2 :(得分:0)

你可以在没有RegExp的情况下完成,但是havy可以执行此类任务。

尝试其他方法:

var test = ['0.000', '1.021', '1.600', '1.666'],
    value;

for (var i = 0; i < test.length; i++) {
 value = (+test[i] * 1000).toFixed(0); // +test[i] -> convert to number

 if (value < 0 || value > 1600) {
    console.log('Bad value is: ' + test[i]); // will print 1.666
 }
}

真实示例https://jsfiddle.net/xrwupphj/

答案 3 :(得分:-1)

这应该有效

被修改

0\.\d{3}|1\.(?:[0-5]\d{2}|600)

这是链接https://www.debuggex.com/r/DzUBZn_gjKiChOjJ

答案 4 :(得分:-2)

很简单,使用这个正则表达式:

((?:0\.\d{3}|1\.[0|1|2|3|4|5]\d{2}|1\.600))

在这里测试:

https://regex101.com/r/rS6eJ8/3