Heim >Backend-Entwicklung >C++ >Wie kann ich Zeichenlängenbeschränkungen in regulären Ausdrücken erzwingen?
Die Zeichenlänge in regulären Ausdrücken
durchsetzen reguläre Ausdrücke benötigen häufig Längenbeschränkungen. Ohne sie stimmt ein Regex in jeglicher Länge überein. Während Quantifizierer die Lösung (z. B. {1,15}
) erscheinen, funktionieren sie nicht direkt auf der gesamten Saite. Dies liegt daran, dass Quantifizierer nur das unmittelbare vorhergehende Element beeinflussen.
zum Beispiel schlägt dieser Versuch fehl:
<code class="language-javascript">var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,?()""']*${1,15}/ // Error!</code>
Die Lookahead -Lösung
Der korrekte Ansatz verwendet eine positive Aus Lookahead -Behauptung:
<code class="language-javascript">^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>
Verständnis der Lookahead
(?=.{1,15}$)
ist der Schlüssel. Dieses positive Lookahead behauptet, dass die gesamte Zeichenfolge (von Anfang an ^
bis zum Ende $
) zwischen 1 und 15 Zeichen (.{1,15}
) enthält. Es verbraucht keine Zeichen; Es überprüft nur den Zustand. Der Rest des Regex stimmt dann mit den zulässigen Zeichen in dieser Längenbeschränkung überein. [a-zA-Z0-9]*[^$%^&*;:,?()""']*$
Neuleitungen
Wenn Ihre Saiten neue Zeichen enthalten, verwenden Sie eine robustere Zeichenklasse, um zu einem beliebigen Charakter zu passt, einschließlich Neulinen:
<code class="language-javascript">^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>
entspricht jedem Whitespace- oder Nicht-Whitespace-Charakter. Dadurch wird sichergestellt, dass die Längenprüfung auch bei Multiline -Eingang korrekt funktioniert. Dies liefert eine zuverlässige Methode zur Durchsetzung von Charakterlängengrenzen in regulären Ausdrücken. [sS]
Das obige ist der detaillierte Inhalt vonWie kann ich Zeichenlängenbeschränkungen in regulären Ausdrücken erzwingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!