我需要一个限制在0.000 - 1.600
的RegEx模式这是我到目前为止所得到的:
^(?:0(?:\.0)?|0?\.[0-9]{1,3}|1(?:\.0{1,3})?|1?\.[0-6]{1,3})$
问题:
此模式还允许值高达1.666
但它应该只允许值 1.600。
有人可以帮忙吗?
答案 0 :(得分:3)
This正则表达式匹配从0.000
到1.600
最多四位数的所有浮点数。它还匹配0
和1
:
^(?:1(?:\.(?:[0-5]\d{0,2}|60{0,2})|)|0(?:\.\d{1,3})?)$
(除此之外,为什么不使用数字?)
答案 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
}
}
答案 3 :(得分:-1)
答案 4 :(得分:-2)