我正在运行一些函数来验证用户在表单中输入的文本是否至少包含一个数字和一个字母。它似乎不起作用。由于这两个函数几乎相同,我将只发布其中一个:
function hasALetter(textField){
//returns true or false based on whether or not the text field has at least one letter inside it
console.log("Checking for letters...");
var hasLetter = false;
for(var i=0, checkLength=textField.length; i<checkLength; i++){
var letter = textField.substr(i,1);
console.log("letter = " + letter);
if(isNan(letter) == false){
hasLetter = false;
}
}
if(hasLetter == true){
return true;
}
}日志(“信函=”+字母)从未出现在我的控制台中。我可能遗漏了一些愚蠢的东西,但它似乎并没有完成这个功能。
作为参考,下面是我如何调用这些函数:
if(pwd.value.length > 9){
var pwdLetter = hasALetter(pwd);
var pwdNumber = hasADigit(pwd);
if(pwdLetter==true){
if(pwdNumber==true){是的,我知道这很麻烦,但我还在学习。我确信有更先进、更清洁的方法来进行这种验证,但为了我的学业,我现在就这样做了。
发布于 2011-03-06 17:43:18
检查字符串是否有字母的最简单方法是正则表达式:
function hasLetter(str){
// check for characters between a and z
// i flag makes it case insensitive
return /[a-z]/i.test(str);
}如果您想循环遍历字符串,并且还希望使用isNaN函数,则可以这样做:
function hasLetter(str){
// loop through every character
for(var i=0; i<str.length; i++){
// check if the i-th character is not a number
if(isNaN(str[i])){
// if so, return true
return true;
}
}
// if the loop has finished and no letters have been found, return false
return false;
}但是我不推荐这种方法,因为isNaN检查第一个参数是否是数字。首先,并非所有不是数字的字符都是字母。其次,传入的参数是一个字符串(str[i]返回一个字符串类型的字符,即使它是一个数字)。
发布于 2011-03-06 17:39:54
是"isNaN“不是"isNan”..。而且,如果它是而不是一个数字,这并不一定意味着它不是一个字母;事实上,逻辑似乎是颠倒的。
如果"isNaN“返回true,那么它不是一个数字。是封信吗?你得检查一下。如果"isNaN“返回false,那么您只知道它是从'0‘到'9’的字符之一。
整件事用正则表达式做要好得多,但如果这是家庭作业的话,那可能是因为不能使用这种方法。您可以检查一个字符是否是一个字母,其内容如下:
function isLetter(c) {
c = c.toUpperCase();
return c >= "A" && c <= "Z";
}发布于 2011-03-06 17:44:31
我会使用正则表达式,下面是几个快速函数。
function hasALetter(text)
{
var regex = new RegExp("[a-zA-Z]");
if(text.match(regex))
return true;
else
return false;
}
function hasANumber(text)
{
var regex = new RegExp("[0-9]");
if(text.match(regex))
return true;
else
return false;
}https://stackoverflow.com/questions/5212132
复制相似问题