LOADING

Type to search

Mustertext anfrage ablehnen

Mustertext anfrage ablehnen

Share

Eine sehr ineffiziente Implementierung der IsValidCurrency-Methode wird im folgenden Beispiel gezeigt. Beachten Sie, dass jeder Methodenaufruf ein Regex-Objekt mit demselben Muster erneut instanziiert. Dies wiederum bedeutet, dass das Muster des regulären Ausdrucks bei jedem Aufruf der Methode neu kompiliert werden muss. Die Unterstützung für das Backtracking gibt regulären Ausdrücken Macht und Flexibilität. Außerdem wird die Verantwortung für die Steuerung des Betriebs des Moduls für reguläre Ausdrücke in die Hände von Entwicklern regulärer Ausdrücke gegeben. Da Entwickler sich dieser Verantwortung oft nicht bewusst sind, spielt ihr Missbrauch von Rückverfolgung oder die Abhängigkeit von übermäßiger Rückverfolgung oft die wichtigste Rolle bei der Erniedrigung der Leistung regulärer Ausdrucke. Im schlimmsten Fall kann sich die Ausführungszeit für jedes zusätzliche Zeichen in der Eingabezeichenfolge verdoppeln. Tatsächlich ist es durch übermäßige Rückverfolgung einfach, das programmatische Äquivalent einer Endlosschleife zu erstellen, wenn die Eingabe fast mit dem Muster des regulären Ausdrucks übereinstimmt. Das Modul für reguläre Ausdrücke kann Stunden oder sogar Tage dauern, um eine relativ kurze Eingabezeichenfolge zu verarbeiten.

Manchmal müssen Sie mehr als nur wissen, ob ein Regex zu einer Zeichenfolge passt. In Editoren und vielen anderen Tools möchten Sie genau wissen, welche Zeichen übereinstimmen. Denken Sie daran, dass bei Quantifizierern wie * die Länge des übereinstimmenden Textes möglicherweise keine Beziehung zur Länge des Musters aufweist, das mit ihm übereinstimmt. Unterschätzen Sie nicht die mächtigen .*, die glücklich passt Tausende oder Millionen von Zeichen, wenn erlaubt. Wie Sie im vorherigen Rezept gesehen haben, können Sie herausfinden, ob eine bestimmte Übereinstimmung erfolgreich ist, indem Sie find( ) oder matches() verwenden. Aber in anderen Anwendungen sollten Sie die Zeichen abrufen, die dem Muster entsprechen. Wenn das Methodenattribut des Elements GET ist (oder weggelassen wird), werden die Informationen im Formular als Abfragezeichenfolge am Ende der Aktions-URL hinzugefügt. Der Browser kann eine Anforderung an diese URL stellen: Das Ereignis “ändern” für ein Textfeld wird nicht jedes Mal ausgelöst, wenn etwas eingegeben wird. Vielmehr wird ausgelöst, wenn das Feld den Fokus verliert, nachdem sein Inhalt geändert wurde. Um sofort auf Änderungen in einem Textfeld zu reagieren, sollten Sie stattdessen einen Handler für das Ereignis “eingabe” registrieren, das jedes Mal ausgelöst wird, wenn der Benutzer ein Zeichen eingibt, Text löscht oder den Inhalt des Felds auf andere Weise bearbeitet. Mit diesen Musterzeichen können Sie Regexe mit beträchtlicher Leistung angeben.

In Baumustern können Sie in Tabelle 4-1 eine beliebige Kombination aus gewöhnlichem Text und den Metazeichen oder Sonderzeichen verwenden.