我正在开发FreeCodeCamp前端开发认证,并且已经到了Basic Algorithm Scripting部分。其中一个练习是编写一个测试回文的代码。我理解要做的一切(差不多),快速编写我的代码但无法理解为什么它没有为包含下划线的字符串(_)给出正确的结果。这是我的代码:
function palindrome(str) {
str = str.replace(/\W/g,'');
if ((((str.toLowerCase()).split("")).reverse()).join("") == str.toLowerCase()){
return true;
}
else {
return false;
}
}
palindrome("_eye");
答案 0 :(得分:1)
正则表达式中的\W
基本上是一种简短的方式来编写"每次聊天不任何[a-zA-Z0-9_]
字符"。
正如您所看到的 - 数字和下划线也是其中的一部分。
如果要移除不是[a-zA-Z]
的每个字符,则可以改为使用/[^a-zA-Z]/
:
function palindrome(str) {
str = str.replace(/[^a-zA-Z]/g,'');
if ((((str.toLowerCase()).split("")).reverse()).join("") == str.toLowerCase()){
return true;
}
else {
return false;
}
}
console.log(palindrome("_eye"))

答案 1 :(得分:0)
只需将正则表达式更改为str.replace(/[\W_]/g,'');