gpt4 book ai didi

JavaScript:我可以将过滤函数与正则表达式一起使用吗?

转载 作者:行者123 更新时间:2023-12-03 02:02:35 25 4
gpt4 key购买 nike

我试图找到一个类似的问题以避免创建重复的问题,但我找不到,但如果我错过了任何问题,我深表歉意。我刚刚开始学习如何编码,就遇到了这个问题:

对于 JavaScript,我想使用过滤数组方法 ( https://www.freecodecamp.org/challenges/filter-arrays-with-filter ) 以及所有非字母数字字符的通用表达式。

例如:

var newArray = oldArray.filter(function(val) {

return val !== /[\W_]/g;

});

我可以这样做吗?在 mozilla 指南 ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions ) 中,它提到您可以将正则表达式与替换一起使用,我知道如何做到这一点,但它根本没有提到过滤器。

举另一个不太抽象的例子,这是我正在编写的代码:

function palindrome(str) {

var splitStr = str.split("");

var filterArray = splitStr.filter(function(val) {

return val !== /[\W_]/g;
});

return filterArray;
}

palindrome("ey*e");

如果到目前为止我做的事情是正确的,该函数应该返回[“e”,“y”,“e”]。但它返回[“e”,“y”,“*”,“e”](就好像我根本没有过滤它一样)。我只是想知道我的代码是否犯了一个错误,或者是否根本无法将过滤器与正则表达式一起使用。

如果是这样,为什么?为什么不能使用带有正则表达式的过滤器!?为什么我们必须使用替换?

最佳答案

这确实不是与 .filter() 相关的问题,只是您没有根据正则表达式正确测试字符串。

要根据正则表达式测试字符串,请使用 .test() 方法:

function palindrome(str) {

var splitStr = str.split("");

var filterArray = splitStr.filter(function(val) {

// Test the string against the regular expression
// and test for no match (whole thing is preceeded by !)
return !/[\W_]/g.test(val);
});

return filterArray;
}

console.log(palindrome("ey*e"));

关于JavaScript:我可以将过滤函数与正则表达式一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49947344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com