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

Rob*_*ert 10 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;
}
Run Code Online (Sandbox Code Playgroud)

需要使用此格式并提供最小/最大范围(现在任意,例如3到48之间).我如何修改此正则表达式以完成并拥有正确的参数?

Viv*_*ath 11

我不明白你的问题.你的意思是你想要一个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);
}
Run Code Online (Sandbox Code Playgroud)

更通用的解决方案:

function validateTextNumericInRange(textInputId, min, max) {
    var textInput = document.getElementById(textInputId);
    var value = parseInt(textInput.value, 10);

    return (!isNaN(value) && value >= min && value <= max);
}
Run Code Online (Sandbox Code Playgroud)

要测试数字是否在3到48位数之间,您可以使用正则表达式/^[0-9]{3, 48}$/.


ste*_*ema 8

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

/^(?:[3-9]|[1-3][0-9]|4[0-8])$/
Run Code Online (Sandbox Code Playgroud)

最好采用Vivins的解决方案.