С точки зрения регулярных выражений, это будет соответствовать вашим потребностям.
^((0\.[5-9])|(([1-9](\.[5-9])?)|(1[0-9](\.[5-9])?)|(2[0-3](\.[5-9])?)|24))$
Вы можете проверить это здесь
Однако, если вы хотите проверить диапазон, я бы посоветовал вам использовать регулярные выражения только для проверки,число допустимо, а затем преобразуйте его и используйте для проверки обычный javascript.
var validator = function(value) {
var regexp = /^-?\d+(\.\d{0,2})?$/;
var isNumber = regexp.test(value);
if (isNumber) {
var parsed = parseFloat(value);
if (0.5 <= parsed && parsed <= 24)
console.log("The number " + parsed + " is within range");
else
console.log("The number " + parsed + " is NOT within range");
} else {
console.log("The value " + value + " is NOT even a valid decimal value");
}
}
validator("-3");
validator("19.6");
validator("22,5");