检查数值或范围

时间:2014-10-05 13:51:08

标签: javascript regex

输入字段可以包含以下值:

23
23-45

不,我想更正价值:

string.replace(/[^\d-]/g,'');

但这并没有纠正这些价值观:

-45
23-
45-23
10-110

所有这些值都不正确(有效值为0-100(因为它们是百分比值),因此110无效)。因此,对于这种情况,我希望用户再次查看输入字段...

我想我必须为这些无效的案例创建第二个RegEx,对吗?

2 个答案:

答案 0 :(得分:1)

如果百分比由整数表示,则返回true的函数,如果包含破折号,则第一个数字小于第二个,并且两个数字都在0到100之间:

function isValidPercentage(input) {
    var mat = /^(\d+)(?:-(\d+))?$/.exec(input + "");
    if (mat !== null && ((mat[2] === undefined && mat[1] < 101) || (mat[1] < mat[2] && mat[2] < 101))) {
        return true;
    }
    return false;
}

编辑#1:如果任一数字大于100

,则强制返回错误

编辑#2:修正了错误,稍微清理了代码

答案 1 :(得分:0)

假设您有输入(#perc)和按钮(#calc),请尝试:

document.querySelector('#calc').addEventListener('click', calculate);

function calculate() {
  // replace all non numeric values in the input with nothing
  // and convert it to a Number (using the + operator).
  var value = +(document.querySelector('#perc').value.replace(/[^\d]/g, ''));
  // now you can check the value
  alert( !isNaN(value) && value >= 0 && value <= 100 
            ? 'ok ' + value 
            : 'not ok ' + value );
}

SO内联代码插入器无法正常工作,因此您必须自己尝试。