【发布时间】:2018-04-20 17:58:43
【问题描述】:
我试图找到一个类似的问题以避免创建重复,但我找不到,但如果我错过了任何问题,我深表歉意。我刚开始学习如何编码,我遇到了这个问题:
对于 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”] (好像我根本没有过滤它)。我只是想知道我的代码是否有错误,或者是否根本无法将过滤器与正则表达式一起使用。
如果是这样,为什么?为什么不能将过滤器与正则表达式一起使用!?为什么我们必须使用替换?
【问题讨论】:
-
也许您正在寻找正则表达式
.test方法?例如:return /[\W_]/g.test(val)? -
为什么不直接使用 "ey*e".replace(/[\W_]/g, "")
-
CRice,谢谢你的回答!这正是我一直在寻找的:)
-
juvian,感谢您的帮助,但我想找到一种使用过滤器而不是替换的方法(只是因为我很想找到替换的替代方法)。但无论如何感谢,因为替换是一个有效的答案!
标签: javascript regex replace filter