JavaScript未返回预期的正则表达式结果
我正在对我的代码进行一点抽象,因为它最终将进入商业产品。我在使用正则表达式测试返回正确的结果时遇到了一些问题JavaScript未返回预期的正则表达式结果,javascript,regex,Javascript,Regex,我正在对我的代码进行一点抽象,因为它最终将进入商业产品。我在使用正则表达式测试返回正确的结果时遇到了一些问题 var files = [ "Jurassic%20Park%20-%20Nedry.mp4", 'Jeb%20Corliss%20Grinding%20The%20Crack.mp4' ]; var filterSearch = function(text){ var filter = new RegExp(text, 'gi'); var displayFil
var files = [
"Jurassic%20Park%20-%20Nedry.mp4",
'Jeb%20Corliss%20Grinding%20The%20Crack.mp4'
];
var filterSearch = function(text){
var filter = new RegExp(text, 'gi');
var displayFiles = files.filter(function(file){
return filter.test( file.toLowerCase());
});
console.log(displayFiles);
}
如果我运行filterSearch('J')或filterSearch('N'),我希望得到两个结果,Jurassic Park和Jeb,而我只得到一个。对于两个文件之间共享的所有其他字符,它似乎都能正常工作,但对于J或N,它却不能正常工作。有人知道为什么我不能正常工作吗?
谢谢
编辑:我可以在repl.it上重复此操作。使用而不是test()
函数
示例
var filterSearch = function(text){
var filter = new RegExp(text, 'gi');
var displayFiles = files.filter(function(file){
return file.search(filter) != -1 ? true : false ;
});
console.log(filter);
console.log(displayFiles);
}
filterSearch('J');
将给您一个输出
["Jurassic%20Park%20-%20Nedry.mp4", "Jeb%20Corliss%20Grinding%20The%20Crack.mp4"]
这是因为在同一全局正则表达式实例上多次调用的
test()
将超过上一个匹配。()
阅读有关成功的。我创建了一些测试文件,其中包含了字母表中的所有字母/数字,以供确认,并且它可以正常工作。谢谢@用户2684405不客气。很乐意帮忙:)