⊗jsSpREESCh 99 of 294 menu

Maskierung von Sonderzeichen in JavaScript-Regexen

Angenommen, wir möchten, dass ein Sonderzeichen sich selbst bezeichnet. Dazu muss es mit einem Backslash maskiert werden. Sehen wir uns Beispiele an.

Beispiel

Im folgenden Beispiel wollte der Autor des regulären Ausdrucks, dass das Suchmuster so aussieht: Buchstabe 'a', dann Plus '+', dann Buchstabe 'x'. Allerdings hat der Code-Autor das Zeichen '+' nicht maskiert und daher sieht das Suchmuster tatsächlich so aus: Buchstabe 'a' ein- oder mehrmals, dann Buchstabe 'x':

let str = 'a+x ax aax aaax'; let res = str.replace(/a+x/g, '!');

In die Variable wird folgendes geschrieben:

'a+x ! ! !'

Beispiel

Jetzt hat der Autor das Plus mit einem Backslash maskiert. Nun sieht das Suchmuster so aus, wie es soll: Buchstabe 'a', dann Plus '+', dann Buchstabe 'x'.

let str = 'a+x ax aax aaax'; let res = str.replace(/a\+x/g, '!');

In die Variable wird folgendes geschrieben:

'! ax aax aaax'

Beispiel

In diesem Beispiel sieht das Muster so aus: Buchstabe 'a', dann Punkt '.', dann Buchstabe 'x':

let str = 'a.x abx azx'; let res = str.replace(/a\.x/g, '!');

In die Variable wird folgendes geschrieben:

'! abx azx'

Beispiel

Im nächsten Beispiel hat der Autor vergessen, den Punkt zu maskieren, und unter den regulären Ausdruck fielen alle Teilzeichenketten, da ein unmaskierter Punkt ein beliebiges Zeichen bezeichnet:

let str = 'a.x abx azx'; let res = str.replace(/a.x/g, '!');

In die Variable wird folgendes geschrieben:

'! ! !'

Bemerkung

Beachten Sie, dass man es möglicherweise nicht einmal bemerkt, wenn man den Backslash für den Punkt vergisst (wenn er sich selbst bezeichnen soll):

'a.x'.replace(/a.x/g, '!'); // gibt '!' zurück, wie wir wollten

Visuell funktioniert es korrekt (da der Punkt ein beliebiges Zeichen bezeichnet, einschließlich eines normalen Punkts '.'). Aber wenn wir die Zeichenkette ändern, in der die Ersetzungen stattfinden - sehen wir unseren Fehler:

'a.x abx azx'.replace(/a.x/g, '!'); // gibt '! ! !' zurück, erwartet wurde '! abx azx'

Liste der Sonderzeichen und gewöhnlichen Zeichen

Wenn ein gewöhnliches Zeichen maskiert wird - passiert nichts Schlimmes - es wird weiterhin sich selbst bezeichnen. Eine Ausnahme sind Ziffern, diese können nicht maskiert werden.

Oft gibt es Zweifel, ob ein bestimmtes Zeichen ein Sonderzeichen ist. Manche gehen soweit, dass sie alle verdächtigen Zeichen nacheinander maskieren. Dies ist jedoch eine schlechte Praxis (überlädt den regulären Ausdruck mit Backslashes).

Sonderzeichen sind: $ ^ . * + ? \ / {} [] () |

Keine Sonderzeichen sind: @ : , ' " ; - _ = < > % # ~ `& !

Praktische Aufgaben

Gegeben sei die Zeichenkette:

let str = 'a.a aba aea';

Schreiben Sie einen regulären Ausdruck, der die Zeichenkette 'a.a' findet, ohne die anderen zu erfassen.

Gegeben sei die Zeichenkette:

let str = '2+3 223 2223';

Schreiben Sie einen regulären Ausdruck, der die Zeichenkette '2+3' findet, ohne die anderen zu erfassen.

Gegeben sei die Zeichenkette:

let str = '23 2+3 2++3 2+++3 345 567';

Schreiben Sie einen regulären Ausdruck, der die Zeichenketten '2+3', '2++3', '2+++3', findet, ohne die anderen zu erfassen (+ kann beliebig oft vorkommen).

Gegeben sei die Zeichenkette:

let str = '23 2+3 2++3 2+++3 445 677';

Schreiben Sie einen regulären Ausdruck, der die Zeichenketten '23', '2+3', '2++3', '2+++3' findet, ohne die anderen zu erfassen.

Gegeben sei die Zeichenkette:

let str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';

Schreiben Sie einen regulären Ausdruck, der die Zeichenketten '*q+', '*qq+', '*qqq+', findet, ohne die anderen zu erfassen.

Gegeben sei die Zeichenkette:

let str = '[abc] {abc} abc (abc) [abc]';

Schreiben Sie einen regulären Ausdruck, der die Zeichenketten in eckigen Klammern findet und sie durch '!' ersetzt.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen