Javascript, числовой диапазон проверки формы (мин/макс)
Имейте script, который определяет текст как число с помощью регулярного выражения:
function validateTextNumericInRange ( textInputId)
{
var numRegex = /^[\d]+$/;
var textInput = document.getElementById(textInputId);
var valid = true;
if(numRegex.test(textInput.value) == false) {
alert('Value must be a number between 3-48');
valid = false;
}
return valid;
}
Необходимо использовать этот формат и задавать диапазон min/max (произвольно на данный момент, скажем, от 3 до 48). Как мне изменить это регулярное выражение для завершения и иметь правильный аргумент?
Ответы
Ответ 1
Я не понимаю ваш вопрос. Вы имеете в виду, что вам требуется число от 3 до 48 цифр или что значение номера должно быть от 3 до 48?
Для последнего вам не нужно регулярное выражение:
function validateTextNumericInRange (textInputId) {
var textInput = document.getElementById(textInputId);
var value = parseInt(textInput.value, 10);
return (!isNaN(value) && value >= 3 && value <= 48);
}
Более общее решение:
function validateTextNumericInRange(textInputId, min, max) {
var textInput = document.getElementById(textInputId);
var value = parseInt(textInput.value, 10);
return (!isNaN(value) && value >= min && value <= max);
}
Чтобы проверить, имеет ли число от 3 до 48 цифр, вы можете использовать регулярное выражение /^[0-9]{3, 48}$/
.
Ответ 2
Regex будет жестким и негибким, для вашего примера это будет:
/^(?:[3-9]|[1-3][0-9]|4[0-8])$/
лучше пойдите с решением Vivins.
Ответ 3
function isInteger(value) {
if ((value.toString()).replace(/^-\d|\d/, "").length == 0) {
return true;
}
return false;
}
function integerInRange(value, min, max) {
if (isInteger(value)) {
if (parseInt(value, 10) >= min && parseInt(value, 10 <= max)) {
return true;
} else {
return false; //not in range
}
} else {
return false; //not an integer
}
}
integerInRange(55, 3, 48); //returns false
integerInRange("55", 3, 48); //returns false
integerInRange(25, 3, 48); //returns true
integerInRange("25", 3, 48); //returns true
В вашем случае вам нужно будет назвать это так
integerInRange(document.getElementById(textInputId).value, 3, 48);
Ответ 4
Я не очень хороший разработчик JavaScript, но я знаю, что в Java вы можете использовать этот синтаксис для проверки минимальной и максимальной длины:
[1-9][0-9]{2,4}
[1-9][0-9]{min,max}