Browse Source

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

Book Pauk 2 years ago
parent
commit
bd2551559b

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

@@ -391,8 +391,8 @@ export default class BaseList {
             } else if (searchValue[0] == '~') {//RegExp
             } else if (searchValue[0] == '~') {//RegExp
 
 
                 searchValue = searchValue.substring(1);
                 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 {
             } else {
                 //where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`;
                 //where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`;
                 return bookValue.localeCompare(searchValue) >= 0 && bookValue.localeCompare(searchValue + maxUtf8Char) <= 0;
                 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);
             a = a.substring(1);
             where = `
             where = `
                 await (async() => {
                 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 {
         } else {
@@ -577,8 +577,8 @@ class DbSearcher {
 
 
                     return `
                     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 {
                 } else {

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

@@ -256,8 +256,8 @@ class BasePage {
             } else if (searchValue[0] == '~') {//RegExp
             } else if (searchValue[0] == '~') {//RegExp
 
 
                 searchValue = searchValue.substring(1);
                 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 {
             } else {
                 //where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`;
                 //where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`;
                 return bookValue.localeCompare(searchValue) >= 0 && bookValue.localeCompare(searchValue + maxUtf8Char) <= 0;
                 return bookValue.localeCompare(searchValue) >= 0 && bookValue.localeCompare(searchValue + maxUtf8Char) <= 0;