diff --git a/Build/Sources/TypeScript/backend/tree/tree.ts b/Build/Sources/TypeScript/backend/tree/tree.ts index 59741e47c0c44a38c8fe62e2ca573b637c8b8d51..f8295ea40f17715d3a0bc8faabd5ebc37c8f9274 100644 --- a/Build/Sources/TypeScript/backend/tree/tree.ts +++ b/Build/Sources/TypeScript/backend/tree/tree.ts @@ -1038,7 +1038,8 @@ export class Tree extends LitElement { labelNode.textContent = label; label = labelNode.innerHTML; if (this.searchTerm) { - const regexp = new RegExp(this.searchTerm, 'gi'); + // Escape all meta characters of regular expressions: ( ) [ ] $ * + ? . { } / | ^ - + const regexp = new RegExp(this.searchTerm.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&'), 'gi'); label = label.replace(regexp, '<span class="node-highlight-text">$&</span>'); } diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/tree/tree.js b/typo3/sysext/backend/Resources/Public/JavaScript/tree/tree.js index 20ddb7d8431b7ee5825f57b8eed806287377cfc0..8565bc1595788d50c1bbd1e9c58c9b46ec1e4899 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/tree/tree.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/tree/tree.js @@ -108,7 +108,7 @@ var __decorate=function(e,t,i,o){var s,n=arguments.length,r=n<3?t:null===o?o=Obj size="small" ></typo3-backend-icon> </span> - `:html`${nothing}`}createNodeContentLabel(e){let t=(e.prefix||"")+e.name+(e.suffix||"");const i=document.createElement("div");if(i.textContent=t,t=i.innerHTML,this.searchTerm){const e=new RegExp(this.searchTerm,"gi");t=t.replace(e,'<span class="node-highlight-text">$&</span>')}return html` + `:html`${nothing}`}createNodeContentLabel(e){let t=(e.prefix||"")+e.name+(e.suffix||"");const i=document.createElement("div");if(i.textContent=t,t=i.innerHTML,this.searchTerm){const e=new RegExp(this.searchTerm.replace(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&"),"gi");t=t.replace(e,'<span class="node-highlight-text">$&</span>')}return html` <div class="node-contentlabel"> <div class="node-name" .innerHTML="${t}"></div> ${e.note?html`<div class="node-note">${e.note}</div>`:nothing}