JavaScript 检查回文(包括空格和标点符号)

JavaScript Check for palindrome (spaces & punctuation included)

正在尝试检查回文。我检查了其他答案,但 none 包含标点符号和空格。

"never odd or even" 和 "A man, a plan, a canal. Panama" 应该 return 正确,但他们没有。

   function palindrome(str) {
  if(str.replace(/[^\w\s]|_/g, "").toLowerCase() === str.replace(/[^\w\s]|_/g, "").toLowerCase().split("").reverse().join("")){
    return true;
  } else {
    return false;
  }
}
palindrome("eye");

我认为您的正则表达式有误。如果要删除空格,则不需要 \s。尝试更改:

str.replace(/[^\w\s]|_/g, "")

str.replace(/[^\w]|_/g, "")

改用:

str.replace(/\W/g, "")

这将用空字符串替换任何非单词字符。

您可以尝试使用更简单的正则表达式来替换任何不在字母表中的字符吗?

function palindrome(str) {
  if(str.replace(/[^a-zA-Z]/g, "").toLowerCase() === str.replace(/[^a-zA-Z]/g, "").toLowerCase().split("").reverse().join("")){
    return true;
  } else {
    return false;
  }
}

这与上面的类似但重新格式化:

function palindrome(str) {
    let regex = /[^a-zA-Z]/g;
    return str.replace(regex, '').toLowerCase() === str.replace(regex, '').toLowerCase().split('').reverse().join('');
}