Соответствие регулярному выражению пропускает первый символ в поиске - PullRequest
0 голосов
/ 31 августа 2018

Давно не писал JavaScript, так что это, вероятно, очень очевидная ошибка.

с использованием RegExp.match (..) в JavaScript, он не собирает и не пропускает первый символ в искомых строках. Ниже приведен вывод из списка строк:

*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"]

1 Ответ

0 голосов
/ 31 августа 2018

У вас есть простая опечатка, отсутствует флаг 'i':

let re = new RegExp(query, 'ig');

Так что ваше регулярное выражение находит только строчные буквы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...