Javascript,表单验证数值范围(最小/最大)

时间:2011-04-27 19:53:48

标签: javascript regex validation

使用正则表达式将脚本定义为数字:


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之间)。如何修改此正则表达式以完成并拥有正确的参数?

4 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:8)

正则表达式会很难且不灵活,因为你的例子就是:

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

最好采用Vivins的解决方案。

答案 2 :(得分: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);

答案 3 :(得分:3)

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

[1-9][0-9]{2,4}
[1-9][0-9]{min,max}