使用RegExp从JavaScript数组返回一个精确匹配
Returning an exact match from a JavaScript array using RegExp
我有一组人,想要过滤一些条件,在这种情况下,我想搜索一个"男性",应该只返回一个结果,但是有了这个集合,我得到了所有的东西,因为正则表达式也捕获了女性。
我尝试匹配"'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 people = [
["Adelaide", 2, "yes", "female"],
["Ada", 2, "yes", "female"],
["Amanda", 1, "yes", "female"],
["Wolf", 3, "no", "male"],
["Rhonda", 1, "no", "female"]
];
var filteredArray = people.filter(function(el){
return el[3] == 'male';
});
http://jsfiddle.net/XRHtZ/(检查您的控制台)
为什么不直接匹配^male
,这将是行开头,紧跟着"male"?
单词"female"包含单词"male":-)
过滤器实际上应该只查看组件子数组中最后一个元素的简单值。不需要使用正则表达式;
return x[3] === "male";
这就是你的"isMale()"函数所需要做的。
在我看来,字符串的开始/结束在这里更合适:
var myMatch = new RegExp('^male$');
如果您只想匹配恰好是"male"的条目,那么只需直接比较:
function isMale(x) {
return(x == "male");
}
不需要使用正则表达式进行精确匹配
相关文章:
- Javascript Regexp :如果一个字母与一个数字相邻,请添加下划线
- Regexp:为一个带星号的组查找多个匹配项
- 用JavaScript RegExp匹配一个完整的单词
- regexp(?) 用于从另一个 URL 中提取 URL
- JavaScript RegExp 用于可选包装器,只有一个记住的部分
- Regexp只有一个点和数字
- 我需要一个RegExp,它只接受文本框中的斜杠
- JavaScript RegExp方法exec()只返回一个项
- Javascript RegExp 在 / 之后获取第二个也是最后一个字符串
- Regexp检查字符串是否至少包含一个''
- 在regexp中提取完整匹配和最后一个标记匹配
- 如何匹配一个url在javascript与regexp
- RegExp只允许单词之间有一个空格
- 调试一个Javascript RegExp正则表达式:验证挂在Amazon URL上
- 使用regexp添加一个特定单词的span类
- Regexp用于检查输入是否仅为整数(int),以及检查另一个输入是否仅为带有2位小数的数字
- RegExp用于删除第一个和最后一个字符,并将结束双斜杠转换为单个
- RegExp用于过滤最后一个点之后的字符
- 如何使一个regexp在js分裂打破使用特殊的文本字符
- 需要一个RegExp来查找没有被加号包围的字符