【发布时间】:2011-09-07 00:23:31
【问题描述】:
我有一组人,想根据一些条件进行过滤,在这种情况下,我想搜索一个“男性”,它应该只返回一个结果,但是有了这个集合,我得到了一切,因为正则表达式是捕捉女性也是如此。
我尝试在“\bmale”或“/\bmale”上进行匹配,但没有得到任何回复。我知道我需要使用单词边界,但由于某种原因它不起作用。
var people = [["Adelaide", 2, "yes", "female"],
["Ada", 2, "yes", "female"],
["Amanda", 1, "yes", "female"],
["Wolf", 3, "no", "male"],
["Rhonda", 1, "no", "female"]];
var isMale = function(x) {
var myMatch = new RegExp("male");
var test = String(x).match(myMatch);
return String(x).match(myMatch);
}
var filteredArray=people.filter(isMale);
document.writeln(filteredArray);
【问题讨论】:
-
再提醒我一次:你为什么要为此使用正则表达式?
-
这可以更简单地完成:
var filteredArray = people.filter(function(itm) { return itm[2] == "male"; }); -
@Joseph Silber - 因为过滤多维数组很方便,因为这就是 match() 返回的内容。除非有更简单的方法?
-
@firedrawndagger - 看看我的回答,然后回到这里。
标签: javascript regex arrays