Javascript输入数字只有正则表达式

时间:2015-10-30 10:34:49

标签: javascript regex validation

我有一个RegEx验证,验证该字段仅为数字。但是,如果字符串的长度超过10位,则验证将仅返回true。但如果小于10,让我们说5,它会返回false。

这是我的代码:

function isNumeric(elem, helperMsg) {
    var numericExpression = /^[0-9]+$/;
    if (elem.value.match(numericExpression)) {
        return true;
    } else {
        alert(helperMsg);
        elem.focus();
        return false;
    }
}


function formValidator() {
    var phone = document.getElementById('home');
    if (isNumeric(phone, "Please enter a valid Australian House Phone Number")) {
        console.log("Passed phone number");
        if (isNumericPostal(postal, "Please enter a valid Postal Code of Australia it should be 4 digits only")) {
            return true;
        }
    }
}
}

3 个答案:

答案 0 :(得分:0)

使用此正则表达式^(\d){9,13}$代替

答案 1 :(得分:0)

这就是你需要的:

/^[0-9]{0,13}$/

这将验证输入字符串的长度是0到13位。因此,即使9,10位数字也会通过。

如果您还有一些最小数字长度,则相应地更改{0,13}

之间,http://www.regexr.com/是创建正则表达式并测试它们的好网站。

答案 2 :(得分:0)

您还在isNumeric函数中混合验证逻辑和UI逻辑。这是不好的做法。 /^\d{10,13}$/.test(yourValue)将返回true/false - 在这种情况下应该更好。

function isNumeric(val) {
    return /^\d{10,13}$/.test(val);
}

function formValidator() {
    var phone = document.getElementById('home');
    if (!isNumeric(phone.value)) {
       alert("Please enter a valid Australian House Phone Number");
       phone.focus();
       return false;
    }
    // do your other logic in similar manner
    return true;
}