Einschränken der Zeichenlänge in regulären Ausdrücken
Bei der Verwendung regulärer Ausdrücke zur Validierung von Eingaben kann es erforderlich sein, die Länge der Zeichen in zu begrenzen übereinstimmen. Dies kann mithilfe von Ankern und Zusicherungen mit der Breite Null erreicht werden.
Das in der Frage bereitgestellte Beispiel verwendet einen regulären Ausdruck, um Zeichenfolgen abzugleichen, die nur Buchstaben, Zahlen und bestimmte Sonderzeichen enthalten, ohne Beschränkung der Zeichenlänge. Beim Versuch, die Länge mithilfe des Quantifizierers {1,15} auf 15 Zeichen zu beschränken, tritt jedoch ein Syntaxfehler auf.
Der Grund dafür ist, dass Quantifizierer nicht auf Anker angewendet werden können. Um die Zeichenlänge einzuschränken, besteht ein alternativer Ansatz darin, einen Lookahead zu verwenden, der am Anfang der Zeichenfolge verankert ist.
Der geänderte Ausdruck:
^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()"]*$
Dieser Ausdruck enthält einen Lookahead, (?= .{1,15}$), das prüft, ob am Ende der Zeichenfolge eine Folge von 1 bis 15 Zeichen vorhanden ist. Der Hauptteil des Ausdrucks vergleicht die Länge der Eingabezeichenfolge.
Ähnlich können Ausdrücke für verschiedene Programmiersprachen erstellt werden:
Flavor | Expression |
---|---|
ECMAScript, C | ^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()"]*$ |
Other regex flavors, Python | A(?=.{1,15}z)[a-zA-Z0-9]*[^$%^&*;:,<>?()"]*z |
Zusätzliche Überlegungen
Das obige ist der detaillierte Inhalt vonWie beschränke ich die Zeichenlänge in regulären Ausdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!