在freecode camp上检查Palindromes(不想要解决方案)

时间:2017-05-18 05:22:56

标签: javascript regex

我想说清楚我不是在寻找解决方案。我真的想了解正在做什么。随之而来的是所有指针和建议都受到欢迎。我正在通过freecodecamp.com检查Palindromes的任务。以下是说明。

  

如果给定的字符串是回文,则返回true。否则,返回   假的。

     

回文是一个单词或句子,两者的拼写方式相同   向前和向后,忽略标点符号,大小写和间距。

     

注意您需要删除所有非字母数字字符   (标点符号,空格和符号)并将所有内容都小写   为了检查回文。

     

我们会传递不同格式的字符串,例如" racecar"," RaceCar",   和#"种族CAR"等等。

     

我们还会传递带有特殊符号的字符串,例如" 2A3 * 3a2"," 2A3   3a2"和" 2_A3 * 3#A2"。

这就是我现在所拥有的代码,我正在努力解决这个问题,并使用chrome dev工具来确定哪些有效,哪些无效。

function palindrome(str) {
  // Good luck!
str = str.toLowerCase();
 //str = str.replace(/\D\S/i);
str = str.replace(/\D\s/g, "");

for (var i = str.length -1; i >= 0; i--)
str += str[i];
}


palindrome("eye");

我不明白的是,当以下代码在开发工具中运行时," e"不见了。

str = str.replace(/ \ D \ s / g,""); " raccar"

所以我的问题是我想念理解的正则表达式的哪一部分?根据我的理解,正则表达式应该只是摆脱空格和整数。

1 个答案:

答案 0 :(得分:0)

/\D\s/g正在替换任何不是数字的字符,后跟一个带有""的空格。

因此,在race car中,正则表达式匹配"e "并将其替换为"",使字符串raccar

对于数字,您需要使用\d。我认为使用OR会得到你想要的东西。因此,您可以尝试/\d|\s/g之类的内容来获取数字或空格。

希望这有助于您的理解!