JavaScript中的表单验证数字范围(最小/最大)

Form validation numeric range (minimum/maximum) in JavaScript

本文关键字:最小 最大 范围 数字 表单 验证 JavaScript      更新时间:2023-09-26

有一个使用正则表达式将文本定义为数字的脚本:

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;
}

需要使用此格式并提供最小/最大范围(目前是任意的,比如3到48之间(。如何修改此正则表达式以完成并具有正确的参数?

我不明白你的问题。你的意思是说你想要一个介于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}$/

正则表达式将是硬的和不灵活的,对于您的示例,它将是:

/^(?:[3-9]|[1-3][0-9]|4[0-8])$/

最好采用Vivins的解决方案。

我不是一个优秀的JavaScript开发人员,但我知道在Java中,您可以使用此语法来测试最小和最大长度:

[1-9][0-9]{2,4}
[1-9][0-9]{min,max}
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);