为什么我的JS代码不会过滤掉这个" _"字符串中的元素?

时间:2016-12-17 20:29:34

标签: javascript

我正在开发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");

2 个答案:

答案 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,'');

即可