Reguläre Ausdrücke verwenden, um die Länge der Eingabezeichenfolge und Sonderzeichen zu steuern
Dieser Artikel befasst sich mit der Herausforderung der Validierung von Eingabezeichenfolgen mithilfe regulärer Ausdrücke und konzentriert sich dabei insbesondere auf die Begrenzung der Zeichenfolgenlänge und den Ausschluss von Sonderzeichen. Ein gängiger Ansatz, bei dem Quantifizierer für Anker verwendet werden, ist häufig nicht in der Lage, die Gesamtlänge genau einzuschränken.
Die Lösung: Positive Lookahead-Behauptung
Die effektivste Lösung verwendet eine positive Lookahead-Behauptung am Anfang des regulären Ausdrucks:
<code>^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>
Lassen Sie uns diesen Ausdruck aufschlüsseln:
^
: Entspricht dem Anfang der Zeichenfolge.(?=.{1,15}$)
: Dies ist die positive Look-Ahead-Behauptung. (?= ... )
ist die Lookahead-Syntax. .{1,15}
entspricht einem bis fünfzehn Mal (.
) einem beliebigen Zeichen ({1,15}
). $
entspricht dem Ende der Zeichenfolge. Dieser gesamte Abschnitt behauptet, dass die Zeichenfolge zwischen 1 und 15 Zeichen lang ist, ohne dass irgendwelche Zeichen in der Übereinstimmung verbraucht werden.[a-zA-Z0-9]*
: Entspricht null oder mehr alphanumerischen Zeichen.[^$%^&*;:,?()""']*
: Entspricht null oder mehr Zeichen, die nicht im angegebenen Satz von Sonderzeichen enthalten.$
: Entspricht dem Ende der Zeichenfolge.Warum Lookahead entscheidend ist
Die Verwendung von Quantoren direkt auf Ankern (^
und $
) ist wirkungslos, da sie nur das unmittelbar vorhergehende Element ändern. Eine Lookahead-Behauptung überprüft jedoch die Länge der gesamten Zeichenfolge bevor der Rest des Ausdrucks ausgewertet wird, um eine genaue Längenkontrolle sicherzustellen.
Mögliche Probleme angehen
.
im Lookahead durch [sS]
, um mit jedem Zeichen, einschließlich Zeilenumbrüchen, übereinzustimmen.{1,15}
Quantifizierer passt die maximale Stringlänge ganz einfach nach Bedarf an.Dieser verbesserte Ansatz bietet eine robuste und genaue Methode zur Validierung von Eingabezeichenfolgen mithilfe regulärer Ausdrücke, wodurch die Länge effektiv begrenzt und gleichzeitig Sonderzeichen eingeschränkt werden.
Das obige ist der detaillierte Inhalt vonWie kann ich die Länge einer Eingabezeichenfolge mithilfe eines regulären Ausdrucks begrenzen und gleichzeitig Sonderzeichen einschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!