diff --git a/packages/loot-core/src/platform/server/sqlite/index.electron.ts b/packages/loot-core/src/platform/server/sqlite/index.electron.ts
index 02206a4cf139c878c705496c8a74c141aa27faa9..d12d133e7eb23be7e3505434f7a0ce2684b7ad39 100644
--- a/packages/loot-core/src/platform/server/sqlite/index.electron.ts
+++ b/packages/loot-core/src/platform/server/sqlite/index.electron.ts
@@ -95,6 +95,10 @@ export async function asyncTransaction(
   }
 }
 
+function regexp(regex: string, text: string | null) {
+  return new RegExp(regex).test(text) ? 1 : 0;
+}
+
 export function openDatabase(pathOrBuffer: string | Buffer) {
   const db = new SQL(pathOrBuffer);
   // Define Unicode-aware LOWER and UPPER implementation.
@@ -107,6 +111,8 @@ export function openDatabase(pathOrBuffer: string | Buffer) {
   db.function('UNICODE_UPPER', { deterministic: true }, (arg: string | null) =>
     arg?.toUpperCase(),
   );
+  // @ts-expect-error @types/better-sqlite3 does not support setting strict 3rd argument
+  db.function('REGEXP', { deterministic: true }, regexp);
   return db;
 }
 
diff --git a/upcoming-release-notes/2929.md b/upcoming-release-notes/2929.md
new file mode 100644
index 0000000000000000000000000000000000000000..2168ed38afc94a390469def5c23105128d8b0593
--- /dev/null
+++ b/upcoming-release-notes/2929.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [MikesGlitch]
+---
+
+Fixes regex filtering on the desktop app