检查字符串的长度是否为0?

时间:2014-09-10 06:10:06

标签: javascript

我正在使用以下代码,我想对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");
}

4 个答案:

答案 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
}