Javascript 如何使用比较运算符确定字符是否为字母数字?

Javascript 如何使用比较运算符确定字符是否为字母数字?,javascript,Javascript,我正在接受freecodecamp挑战“检查回文”。编写一个函数来检查给定字符串是否为回文。这是我的密码: function palindrome(str) { str = str.toLowerCase(); for(var i=0; i<str.length; i++){ if((str[i] > 'z' || str[i] < 'a') && (str[i] < '0' || str[i] > '

我正在接受freecodecamp挑战“检查回文”。编写一个函数来检查给定字符串是否为回文。这是我的密码:

    function palindrome(str) {
      str = str.toLowerCase();
      for(var i=0; i<str.length; i++){
        if((str[i] > 'z' || str[i] < 'a') && (str[i] < '0' || str[i] > '9')){
          str = str.replace(str[i], '');
        }
      }
      for(i=0; i<str.length/2; i++){
        if(str[i] != str[str.length-1-i]){
        return false;
        }
      }
      return true;
    }

该功能工作正常。我的第一个方法不正确吗?

回文忽略了大小写、空格、标点和换行符等

因此:

一个男人。一个计划。运河:巴拿马

是一个有效的回文

因此,在尝试计算字符串之前,需要去除字符串中的所有标点和空格,以便实际计算的字符串为:

巴拿马阿曼那普兰运河酒店

然后就可以很容易地对剩余的字符执行任何您想要的比较


不久前我做了其中一个测试,包括一些测试,可能值得一看:

您能给出一些示例输入+输出吗是的,您的第一个代码片段不正确。它在迭代的同时改变字符串-缩短它。@cartant我现在明白了。非常感谢。@Jonasw palindrome(“赛车”)应该返回真值。回文(“非回文”)应返回false。
    function palindrome(str) {
      str = str.toLowerCase().replace(/[\W_]/g, '');
 //   for(var i=0; i<str.length; i++){
 //     if((str[i] > 'z' || str[i] < 'a') && (str[i] < '0' || str[i] > '9')){
 //       str = str.replace(str[i], '');
 //     }
 //   }
      for(i=0; i<str.length/2; i++){
      if(str[i] != str[str.length-1-i]){
          return false;
        }
      }
      return true;
    }