Проверьте диапазон чисел в условии if
интересно, можно ли использовать в if
оператор regex. Я хочу проверить, находится ли значение в допустимом диапазоне. Если да сделать что-то иначе что-то другое.
ассортимент 0.001-0.009
. Я знаю, как использовать несколько if
чтобы проверить это, но я хочу знать, есть ли способ проверить его в одном if
заявление с регулярным выражением.
6 ответов
вы задаете вопрос о числовых сравнениях, поэтому регулярные выражения действительно не имеют ничего общего с проблемой. Вам не нужно "несколько 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
}
если вы должны используйте регулярное выражение (и действительно, Вы не должны!) это будет работать:
/^0\.00([1-8]\d*|90*)$/
должны работать, т. е.
-
^
ничего, - следовал по
0.00
(nb: побег обратной косой черты для.
символ) - с последующим 1 до 8, и любое количество дополнительных цифр
- или 9, а затем любое количество нулей
-
$
: и больше ничего
вот вариант только с одним сравнением.
// 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
мне нравится функция поэтому я написал аналогичный, который хорошо работал для моего сценария.
/**
* 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
был в пределах ±10 от y
:
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);
Если вы хотите, чтобы ваш код, чтобы выбрать определенный диапазон цифр, обязательно используйте &&
оператор вместо ||
.
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
}
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