有一段时间没有编写JavaScript了,所以这可能是一个非常明显的错误。
在JavaScript中使用RegExp.match(..),不会拾取/跳过要搜索的字符串中的第一个字符。以下是字符串列表的输出:
*query = 'g'*
Genetic engineering: g,g
Gene therapy: null
Surfactant: null
Human cloning: g
Protein production: null
Microfluidics: null
Polymerase chain reaction: null
RNA: null
Restriction enzyme: null
Picotechnology: g
Femtotechnology: g
Grey goo: g
Molecular engineering: g,g
Microfluidics: null
Molecular nanotechnology: g
Nanoengineering: g,g
Atom probe: null
Maxwell's demon: null
例如,“基因工程”应为:g,g,g,但第一个(也只有第一个)字符被省略。例如,如果我键入“ enetic”,那么基因工程将成功匹配。
代码如下:
function createFilterFor(query) {
return function filterFn(state) {
let re = new RegExp(query, 'g');
console.log(state+":\t"+state.match(re,'ig'))
return (state.match(re,'ig') != null? true : false );
};
}
此函数返回搜索文本字段的项目列表,如下所示:
(8) ["Genetic engineering", "Human cloning", "Picotechnology", "Femtotechnology", "Grey goo", "Molecular engineering", "Molecular nanotechnology", "Nanoengineering"]
答案 0 :(得分:0)
您有简单的错字,缺少'i'标志:
let re = new RegExp(query, 'ig');
因此您的正则表达式只能找到小写字母。