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

问题描述 投票:0回答:5

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

“从不奇数或偶数”和“一个人,一个计划,一条运河。巴拿马”应该返回 true,但他们没有。

   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");
javascript regex function palindrome
5个回答
3
投票

我认为您的正则表达式有错误。如果你想删除空格,你不需要那个

\s
。尝试改变:

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

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

2
投票

改为使用:

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

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


0
投票

您可以尝试使用更简单的正则表达式,它只需替换字母表中没有的任何字符?

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;
  }
}

0
投票

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

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

0
投票

要处理字符串中不均匀间隔的数字、标点符号和大写字母,您可以使用

let regex = /[^a-zA-Z0-9]/g;
  return (
    str.replace(regex, "").toLowerCase() ===
    str.replace(regex, "").toLowerCase().split("").reverse().join("")
  );
© www.soinside.com 2019 - 2024. All rights reserved.