我想说清楚我不是在寻找解决方案。我真的想了解正在做什么。随之而来的是所有指针和建议都受到欢迎。我正在通过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"
所以我的问题是我想念理解的正则表达式的哪一部分?根据我的理解,正则表达式应该只是摆脱空格和整数。
答案 0 :(得分:0)
/\D\s/g
正在替换任何不是数字的字符,后跟一个带有""的空格。
因此,在race car
中,正则表达式匹配"e "
并将其替换为"",使字符串raccar
对于数字,您需要使用\d
。我认为使用OR
会得到你想要的东西。因此,您可以尝试/\d|\s/g
之类的内容来获取数字或空格。
希望这有助于您的理解!