Просмотр исходного кода

Исправления багов поиска по рег. выражению

Book Pauk 2 лет назад
Родитель
Сommit
bd2551559b
3 измененных файлов с 8 добавлено и 8 удалено
  1. 2 2
      client/components/Search/BaseList.js
  2. 4 4
      server/core/DbSearcher.js
  3. 2 2
      server/core/opds/BasePage.js

+ 2 - 2
client/components/Search/BaseList.js

@@ -391,8 +391,8 @@ export default class BaseList {
             } else if (searchValue[0] == '~') {//RegExp
 
                 searchValue = searchValue.substring(1);
-                const re = new RegExp(searchValue, 'gi');
-                return re.exec(bookValue);
+                const re = new RegExp(searchValue, 'i');
+                return re.test(bookValue);
             } else {
                 //where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`;
                 return bookValue.localeCompare(searchValue) >= 0 && bookValue.localeCompare(searchValue + maxUtf8Char) <= 0;

+ 4 - 4
server/core/DbSearcher.js

@@ -71,8 +71,8 @@ class DbSearcher {
             a = a.substring(1);
             where = `
                 await (async() => {
-                    const re = new RegExp(${db.esc(a)}, 'gi');
-                    @@indexIter('value', (v) => re.exec(v) );
+                    const re = new RegExp(${db.esc(a)}, 'i');
+                    @@indexIter('value', (v) => re.test(v) );
                 })()
             `;
         } else {
@@ -577,8 +577,8 @@ class DbSearcher {
 
                     return `
                         (() => {
-                            const re = new RegExp(${db.esc(searchValue)}, 'gi');
-                            return re.exec(row.${bookField});
+                            const re = new RegExp(${db.esc(searchValue)}, 'i');
+                            return re.test(row.${bookField});
                         })()
                     `;
                 } else {

+ 2 - 2
server/core/opds/BasePage.js

@@ -256,8 +256,8 @@ class BasePage {
             } else if (searchValue[0] == '~') {//RegExp
 
                 searchValue = searchValue.substring(1);
-                const re = new RegExp(searchValue, 'gi');
-                return re.exec(bookValue);
+                const re = new RegExp(searchValue, 'i');
+                return re.test(bookValue);
             } else {
                 //where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`;
                 return bookValue.localeCompare(searchValue) >= 0 && bookValue.localeCompare(searchValue + maxUtf8Char) <= 0;