我想检查某个值是否在可接受的范围内。如果是,做某事;否则,别的什么。
范围是0.001-0.009
。我知道如何使用多个if
来检查这一点,但我想知道是否有任何方法可以在一个if
语句中检查它。
答案 0 :(得分:165)
你问的是关于数字比较的问题,所以正则表达式实际上与问题无关。您不需要“多个if
”语句来执行此操作:
if (x >= 0.001 && x <= 0.009) {
// something
}
你可以自己写一个“between()”函数:
function between(x, min, max) {
return x >= min && x <= max;
}
// ...
if (between(x, 0.001, 0.009)) {
// something
}
答案 1 :(得分:20)
这是一个只有一个比较的选项。
// return true if in range, otherwise false
function inRange(x, min, max) {
return ((x-min)*(x-max) <= 0);
}
console.log(inRange(5, 1, 10)); // true
console.log(inRange(-5, 1, 10)); // false
console.log(inRange(20, 1, 10)); // false
答案 2 :(得分:17)
如果你必须使用正则表达式(实际上,你不应该!)这将起作用:
/^0\.00([1-8]\d*|90*)$/
应该有效,即
^
,0.00
(nb:.
字符的反斜杠转义)$
:其他任何内容答案 3 :(得分:8)
如果您已经在使用lodash
,则可以使用inRange()
函数:
https://lodash.com/docs/4.17.15#inRange
_.inRange(3, 2, 4);
// => true
_.inRange(4, 8);
// => true
_.inRange(4, 2);
// => false
_.inRange(2, 2);
// => false
_.inRange(1.2, 2);
// => true
_.inRange(5.2, 4);
// => false
_.inRange(-3, -2, -6);
// => true
答案 4 :(得分:2)
我喜欢Pointy的between
功能,所以我写了一个类似的功能,适用于我的场景。
/**
* Checks if an integer is within ±x another integer.
* @param {int} op - The integer in question
* @param {int} target - The integer to compare to
* @param {int} range - the range ±
*/
function nearInt(op, target, range) {
return op < target + range && op > target - range;
}
所以,如果您想查看x
是否在y
的±10之内:
var x = 100;
var y = 115;
nearInt(x,y,10) = false
我用它来检测长按手机:
//make sure they haven't moved too much during long press.
if (!nearInt(Last.x,Start.x,5) || !nearInt(Last.y, Start.y,5)) clearTimeout(t);
答案 5 :(得分:0)
如果您希望代码选择特定的数字范围,请务必使用&&
运算符代替||
。
if (x >= 4 && x <= 9) {
// do something
} else {
// do something else
}
// be sure not to do this
if (x >= 4 || x <= 9) {
// do something
} else {
// do something else
}
&#13;
答案 6 :(得分:0)
在编写条件之前,您必须先确定上下限
class MyObject
{
public:
enum
{
myFieldSize = sizeof(myField),
};
protected:
uint8_t myField;
}