Wie kann ich Elemente markieren, die mit einem regulären Ausdruck in CKeditor übereinstimmen?

Ich möchte in der Lage sein, den gesamten Text, der einer Regex in CKEditor entspricht, hervorzuheben (d. H. In einem Bereich mit einer Farbe oder auf eine andere Art und Weise zu umbrechen). Ich würde wahrscheinlich eine Schaltfläche hinzufügen, um dies zu tun, und eine Schaltfläche, um Hervorhebungen zu entfernen. Mein spezieller Anwendungsfall ist es, alle Schnurrbartvariablen in meinen HTML-Vorlagen hervorzuheben (um wirklich leicht zu erkennen, wo es Schnurrbartvariablen gibt).

Ich habe eine Version implementiert, in der ich einen regulären Ausdruck, der mit Schnurrbärten übereinstimmt, durch einen Bereich und dann die Erfassungsgruppe ersetze. Dies scheint bei einigen Vorlagen beim Testen zu scheitern.

Um die Hervorhebung zu entfernen, verwende ich editor.removeStyle, was anscheinend nicht in allen Fällen funktioniert.

Hier ist ein Beispiel für das, was ich implementiert habe:

editor.addCommand( 'highlightMustache', {
            exec: function( editor ) {
                editor.focus();
                editor.document.$.execCommand( 'SelectAll', false, null );
                var mustacheRegex = /{{\s?([^}]*)\s?}}/g;
                var data = editor.getData().replace(mustacheRegex, '<span style="background-color: #FFFF00">{{ $1 }}</span>');
                editor.setData( data );
            }
        });

        // command to unhighlight mustache parameters
        editor.addCommand( 'unhighlightMustache', {
            exec: function( editor ) {
                editor.focus();
                editor.document.$.execCommand( 'SelectAll', false, null );
                var style = new CKEDITOR.style( { element:'span', styles: { 'background-color': '#FFFF00' },type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1 } );
                editor.removeStyle( style );
                editor.getSelection().removeAllRanges();
            }
        });

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage