diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx index 965b927b..9d727b58 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx @@ -69,7 +69,11 @@ const PopupContainer: React.FC = ({ base, resolve }) => { const highlightText = (text: string) => { if (!searchKeyword) return text - const parts = text.split(new RegExp(`(${searchKeyword})`, 'gi')) + + // Escape special characters in the search keyword + const escapedKeyword = searchKeyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + const parts = text.split(new RegExp(`(${escapedKeyword})`, 'gi')) + return parts.map((part, i) => part.toLowerCase() === searchKeyword.toLowerCase() ? {part} : part )