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

时间:2016-02-05 17:15:53

标签: javascript regex function palindrome

试图检查回文。我检查了其他答案但没有包括标点符号和&空格。

“从不奇怪甚至”和“一个人,一个计划,一条运河。巴拿马”应该归还,但他们不会。

   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");

4 个答案:

答案 0 :(得分:3)

我认为你的RegEx有错误。如果要删除空格,则不需要\s。尝试更改:

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

使用

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

答案 1 :(得分:2)

改为使用:

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

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

答案 2 :(得分: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;
  }
}

答案 3 :(得分:0)

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

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