Einschränkung der Eingabelänge in regulären Ausdrücken
Reguläre Ausdrücke bieten eine leistungsstarke Möglichkeit, Muster im Text abzugleichen, und es ist oft notwendig, die Länge zu beschränken der übereinstimmenden Zeichen. Obwohl dies einfach erscheinen mag, kann es schwierig sein, Quantoren korrekt anzuwenden. In diesem Artikel untersuchen wir, warum die Begrenzung von Quantoren am Ende eines Musters nicht funktioniert, und bieten einen alternativen Ansatz mithilfe von Lookaheads.
Betrachten Sie den folgenden regulären Ausdruck:
/(a-z|A-Z|0-9)*[^$%^&*;:,<>?()""']*$/
Dieser Ausdruck gleicht eine Folge von Buchstaben, Ziffern und anderen Zeichen ab, schränkt jedoch nicht die Gesamtlänge der Eingabezeichenfolge ein. Um die Zeichen auf 15 zu beschränken, könnten wir Folgendes versuchen:
/(a-z|A-Z|0-9)*[^$%^&*;:,<>?()""']*${1,15}/
Dies führt jedoch zu einem Fehler. Der Grund dafür ist, dass Quantoren sich auf das Untermuster unmittelbar links von ihnen beziehen, nicht auf das gesamte Muster. In diesem Fall gilt der Quantor {1,15} für die zweite Zeichenklasse und begrenzt deren Länge auf 1 bis 15 Zeichen, nicht jedoch die Gesamtlänge der Zeichenfolge.
Stattdessen die richtige Methode zur Einschränkung der Eingabelänge besteht darin, einen Lookahead zu verwenden, der am Anfang der Zeichenfolge verankert ist:
^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()""']*$
Dieser Lookahead stellt sicher, dass die gesamte Eingabezeichenfolge der gewünschten Länge entspricht Einschränkung.
Hinweis: Lookaheads sind Behauptungen mit der Breite Null, die keine Zeichen verbrauchen. Sie geben nur basierend auf dem nachfolgenden Muster „true“ oder „false“ zurück.
In Fällen, in denen die Eingabe Zeilenumbrüche enthalten kann, können Sie die portable Zeichenklasse [sS] verwenden, um jedes Zeichen, einschließlich Zeilenumbrüche, abzugleichen:
^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()""']*$
Durch die Verwendung von Lookaheads können wir die Länge der Eingabezeichenfolge effektiv einschränken und gleichzeitig das gewünschte Mustervergleichsverhalten beibehalten.
Das obige ist der detaillierte Inhalt vonWie kann ich die Eingabelänge in regulären Ausdrücken mithilfe von Lookaheads einschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!