我有一个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;
}
}
}
}
答案 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;
}