检查if条件中的一系列数字
我不知道是否有可能在if
语句中使用正则expression式。 我想检查一个值是否在可接受的范围内。 如果是的话做别的事情。
范围是0.001-0.009
。 我知道如何使用多个if
检查这个,但我想知道是否有任何方法来检查它在一个单一的if
语句与正则expression式。
你正在问一个关于数字比较的问题,所以正则expression式实际上与这个问题无关。 您不需要“多个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 }
如果你必须使用正则expression式(真的,你不应该!)这将工作:
/^0\.00([1-8]\d*|90*)$/
应该工作,即
-
^
之前没有什么, - 后跟
0.00
(nb:。字符的反斜杠转义) - 接着是1到8,以及任何数量的附加数字
- 或9,然后是任意数量的零
-
$
:没有别的
我喜欢Pointy between
function,所以我写了一个类似的工作,我的情况很好。
/** * 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);
Pointy是对的,但如果你使用的是CoffeeScript,语法看起来像ruby
shipping = (x) -> switch when 0 <= x <= 1500 150 when 1501 <= x <= 4000 350 when 4001 <= x <= 8000 550 when 8001 <= x <= 12000 750 when 12001 <= x <= 20000 950 when 20001 <= x <= 40000 1500 else 3000