检查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 betweenfunction,所以我写了一个类似的工作,我的情况很好。

 /** * 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