我正在使用以下代码,我想对valueofzip
执行长度检查。当我设置valueofzip = 08820
时,我希望这不符合以下条件,意味着它会转到else
块。我怎么能表演呢?
var valueofzip = 08820;
if (isNaN(valueofzip) || valueofzip.toString().length < 5 || || valueofzip > 99999) {
e.preventDefault();
showClientError("Entered Zipcode is invalid, Please input a valid 5 digit number");
$('#zip').addClass("input-validation-error");
isvalid = false;
}
else
{
alert("valid");
}
答案 0 :(得分:2)
将您的邮政编码定义为字符串,而不是数值。然后使用一个简单的正则表达式来测试你有五个数字:
var valueofzip = "08820";
var pattern = /^\d{5}$/;
if (pattern.test(valueofzip)) {
alert("valid");
} else {
. . .
}
使用您发现的数字存在一个大问题:领先的零点并不能满足您的需求。充其量它会迷失方向。在最坏的情况下,它被解释为八进制文字(现已弃用)。
答案 1 :(得分:0)
语法错误:有重复的||在“&lt; 5”和“&gt; 99999”之间。
由于valueofzip.toString()。长度等于4,因此不会转到else语句。
您可以在控制台中轻松查看(最常见的浏览器提供开发人员工具来帮助您调试代码,按F12启动它)。
答案 2 :(得分:0)
您的valueofzip
变量不会是08820
,它是一个整数,一个数字,它会剥离前一个0,因为数字不会像0一样开始...... {{ 1}}实际上是valueofzip
。一直把它当成一根绳子。
检查var以仅包含数字,而不是isNan,这可以通过简单的正则表达式来完成,例如:8820
。
这样,您就会知道字符串只是数字,长度将保持不变,长度为5个字符
如果您希望将其保持在/^\d+$/.test(valueofzip)
范围内,请检查以确保长度仅为5个字符:00000 => 99999
另外,删除重复的||在if子句中,它会导致错误。
答案 3 :(得分:0)
如果你想删除起始零并检查条件,这里是代码
var retStr = '';
function removeStartingZeros( str ){
if( str.indexOf(0) == '0' ){
str = str.replace(0,'').trim();
removeStartingZeros( str );
}
else retStr=str;
return retStr;
}
var valueofzip = "000000000000000008820";
valueofzip = removeStartingZeros( '000000000000000008820' );
// here 'valueofzip' will be equal to '8820'
if( /^\d+$/.test(valueofzip) && valueofzip.length > 4){
// your code for ...if valid string
}
else{
// your code for....if invalid string
}