Heim > Web-Frontend > js-Tutorial > Wie kann ich die Eingabelänge in regulären Ausdrücken mithilfe von Lookaheads einschränken?

Wie kann ich die Eingabelänge in regulären Ausdrücken mithilfe von Lookaheads einschränken?

Linda Hamilton
Freigeben: 2024-11-22 16:00:27
Original
231 Leute haben es durchsucht

How to Restrict Input Length in Regular Expressions Using Lookaheads?

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)*[^$%^&*;:,<>?()""']*$/
Nach dem Login kopieren

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}/
Nach dem Login kopieren

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]*[^$%^&*;:,<>?()""']*$
Nach dem Login kopieren
  • Der ^-Anker entspricht dem Anfang des string.
  • Der positive Lookahead (?=.{1,15}$) prüft, ob vor dem Ende der Zeichenfolge ($) 1 bis 15 Zeichen vorhanden sind.
  • Die verbleibende Zeichenklasse Entspricht Buchstaben, Ziffern und anderen zulässigen Zeichen.

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]*[^$%^&*;:,<>?()""']*$
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage