From 5e4198aef91b45bb4bc134f8604a95fba2bfefa9 Mon Sep 17 00:00:00 2001 From: Fraser Date: Tue, 15 Aug 2023 22:39:08 -0400 Subject: [PATCH] add word boundaries to terms, escape regex chars --- web/src/pages/_app.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/web/src/pages/_app.tsx b/web/src/pages/_app.tsx index 51f9b5f..6e1fa20 100644 --- a/web/src/pages/_app.tsx +++ b/web/src/pages/_app.tsx @@ -15,8 +15,11 @@ const MyApp: AppType = ({ Component, pageProps }) => { .then((res) => res.json()) .then((data) => { const glossary: Glossary = new Map(Object.entries(data)); - const keys = Array.from(glossary.keys()).sort((a, b) => b.length - a.length); - console.log(keys); + const keys = Array.from(glossary.keys()) + .sort((a, b) => b.length - a.length) // sort by length descending + .map((k) => k.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')) // escape regex chars + .map((k) => `\\b${k}\\b`); // add word boundaries + const regex = new RegExp(keys.join("|"), "gim"); setGlossary({ g: glossary, r: regex }); });